微软从.NET 6 代码中删除“热重载”功能激怒.NET社区,或为“强捧”自家的 Visual Studio ?SegmentFault关注共 2368字,需浏览 5分钟 ·2021-10-26 22:03 技术编辑:MissD丨发自 思否编辑部公众号:SegmentFault近日,微软因在即将发布的 .NET 6 中悄悄删除了 Hot Reload(热重载) 的核心部分,一时间“激怒”了开源.NET社区,且受到了来自开源.NET 开发者的“攻击”。对此,外界评论称微软此举或“为了增强 Visual Studio 的吸引而拉动销量”,尤其是针对其跨平台的同类 Visual Studio 代码,因此悄然从开源.NET 代码中删除了“热重载”这个旗舰功能。据了解,该事件“震源”的两个关键点:一是 GitHub 上开源.NET SDK 存储库中的 pull 请求里,其中 2500 行“热重载”功能的源代码被从名为 dotnet watch 的工具中删除;二是在该博客文章中,主要项目经理 Dmitry Lyalin 透露,“我们决定从即将发布的.NET 6 GA开始,只通过 Visual Studio 2022 启用热重新加载功能。”也就是说,.NET 6.0 的热重载功能,只限于 Windows 和 Visual Studio 开发平台,而非开放的跨多个平台可用的。所谓的“热重载”功能,是开发人员可以在应用程序运行时修改源代码、更改应用,并在运行的应用程序中查看结果。这个功能可以帮助加快开发过程,比重建代码、停止应用程序、应用更改然后再次启动代码还要快。Lyalin 表示,引入热重新加载时,开发人员可以通过“Visual Studio 2019 版本 16.11(预览版1)中的.NET 热重新加载体验和.NET 6(预览版4)中的dotnet watch 命令行工具”来使用该功能。“该功能在.NET 6 RC2 中,具有上线许可证,该版本已于 10 月 12 日发布,早于计划 11 月 9 日在.NET Conf 2021 在线会议上发布.NET 6 之前。微软删除“热重载”功能,在当前阶段来看是个令人惊讶的操作,.NET 开发人员更是对此“大受震撼”,以至于提交了一个“阻止更改”的请求并迅速吸引了不少业内支持。一位开发人员就表示:“考验.NET 是否真的是OSS(开源软件项目)性质的时刻到了。”微软删除“热重载功能”,.NET 社区为啥会“大受震撼”?微软删除“热重载功能”的操作,为啥在开源.NET 看来会有这么严重?对此,.NET 社区方面表态称,尽管“热重载”是一种工具功能,但一旦变更,就意味着“开源的.NET SDK 正在被故意削弱,而使的 Visual Studio(一种具有简化版的商业产品、包括微软赞助的 Visual Studio代码)比竞争对手更具吸引力。关键是,微软此次变更并没有与.NET 社区协商,这会让.NET 基金会牵扯进无法辨别的危机中。.NET 社区表示,该问题的核心点是:微软是否严肃对待.NET是一个开源平台?开发人员工具对于微软公司来说具有重要的战略意义:吸引程序员使用该平台。所以对于局外人来说,“删除热重载”的决定似乎也很奇怪。同时,.NET 社区还表示,微软云是.NET的天然“destination”(目的地),因为 Visual Studio 代码是免费的,且是 Microsoft 在开发人员社区中有史以来最成功的产品,因此相比 VisualStudio 销售的轻微影响,其为.NET的VS 代码带来的强大支持所带来的潜在利益则大得多。.NET 社区透露,不仅微软将.NET 6.0 的热重载功能删除,目前 macOS 和 Linux 开发人员那里也删除了该选项,“现在这个功能真的成为了 Windows 和 Visual Studio 开发平台独有的工具了”。.NET 社区对微软这一操作的“讨伐”,目前已经得到不少开发人员的支持,该话题已经在 Twitter 上引发讨论。有人指出,删除“发生在 RC1和RC2被公开之后……在他们正式宣布 RC1 中可用的功能将在最终产品中可用并得到支持之后。”也有开发人员问道:“如果您在 Windows 以外的平台上积极体验 gimp 开发经验,怎么能期望.NET 成为一个跨平台开发的有效解决方案?...”事件后续:事情发展到现在,大家可能要问了,微软方面的.NET 团队对此事件有何看法?据外媒报道,The normal evangelists 在这个问题上一直保持沉默,尽管微软知名热心开发倡导者 Scott Hanselman 前天确实发表了一篇文章,但没有说明原因:谁知道,可能有联系。同时,Lyalin 也在他的帖子中添加并删除了一个标题为“2021 年 10 月 21 日更新”的部分,该部分写道:“为了澄清,我们不会将热重载作为 dotnet watch 工具的一项功能发布。我们正在将所有精力投入 Visual Studio 2022。”我们不确定删除此更新的原因,并已向微软征求进一步意见。这篇文章上线前后不久,Lyalin 的博客文章再次更新,已经恢复了上述澄清。所以,这件事的来龙去脉究竟如何,局外人也看个热闹。不过在业内人士看来,这次是微软为了“强捧”Visual Studio 2022 以占取更多销量,不惜把.NET 6.0 的热重载功能变成了 Windows 和 Visual Studio 独有工具,这一操作确实会引发开源圈同行的”质疑“。不知道接下来事件的走向会如何发展,如果您对此事件也有不同看法,欢迎在评论区留言互动。- END - 浏览 39点赞 评论 收藏 分享 手机扫一扫分享分享 举报 评论图片表情视频评价全部评论推荐 尝鲜 .NET 6.0 的 C# 代码热重载dotNET全栈开发0微软博客回应删除.NET热重载功能:通过 CLI 支持 .NET 热重载llovebo0微软道歉!“我们犯了一个错误”|现已恢复 .NET “热重载”功能马哥Linux运维0Visual Basic .NET Visual Basic.NET(VB .NET)是基于微软.NET Framework之上的面Visual Basic .NETVisual Basic .NET0激怒开源社区,微软悄悄删除2500行功能代码后致歉:已恢复!玩转GitHub0激怒开源社区,微软悄悄删除2500行功能代码后致歉:已恢复!互联网架构师0激怒开源社区,微软悄悄删除2500行功能代码后致歉:已恢复!dotNET全栈开发0.NET 6 中 LINQ 的改进dotNET全栈开发0.NET 6 中的 LINQ 更新dotNET全栈开发0点赞 评论 收藏 分享 手机扫一扫分享分享 举报