微软近日激怒了开源.NET社区,起因是它删除了开源.NET的一项旗舰功能,以提升Visual Studio 的吸引力,尤其是针对与Visual Studio颇有渊源的跨平台源代码编辑器Visual Studio Code。好消息是微软听取了社区的声音,恢复了通过CLI支持HotReload功能。

今天早上.NET团队负责人Scott Hunter在.NET官方博客上发布了一篇文章,具体参见 https://devblogs.microsoft.com/dotnet/net-hot-reload-support-via-cli/,文章提到了的愿景是为.NET创建一个开放和充满活力的生态系统。与许多公司一样,微软正在学习平衡 OSS 社区的需求,并成为.NET 的企业赞助商。有时候微软做对了。当微软做错了,微软能做的最好的事情就是从错误中吸取教训,更好地向前迈进。

同时也透露了一个问题,微软还没有学会,如何跟一个强大的开源社区相处,这非常像美国还没有学会,如何跟一个强大的中国相处一样。开源路上的挫折可能更快加速微软同开源社区相处,我相信微软是真的爱开源。

最近备受争议的有两个关键部分,一是GitHub上开源.NET SDK代码存储库中的这个合并请(https://github.com/dotnet/sdk/pull/22217),即从一款名为dotnet watch的工具中删除了用于实现Hot Reload(热重载)这项功能的2500行代码,今天早上已经通过这个合并恢复了(https://github.com/dotnet/sdk/pull/22262);二是这篇博文,微软首席项目经理Dmitry Lyalin在博文中透露:“我们已决定,从即将发布的.NET 6正式版开始,我们将仅通过Visual Studio 2022启用热重载功能。”,早上Scott Hunter已经宣布恢复这项功能。

(https://devblogs.microsoft.com/dotnet/update-on-net-hot-reload-progress-and-visual-studio-2022-highlights/)
热重载是一项功能,开发人员可以利用该功能在应用程序运行时修改源代码、实施更改,并在运行中的应用程序中查看结果。该功能之所以可以加快开发过程,是由于它比重新构建代码、停止应用程序、实施更改后再次启动应用程序要快。
Lyalin当初在介绍重加载功能时表示,开发人员可以通过“Visual Studio 2019版本16.11(预览版1)中的.NET热重载体验和.NET 6(预览版4)中的dotnet watch命令行工具来使用它”。该功能出现在.NET 6 RC2中,该版本拥有上线(go-live)许可证,已于10月12日发布,赶在计划于11月9日召开的.NET Conf 2021线上大会上发布.NET 6之前发布。
删除热重载在这个后期阶段令人惊讶,令广大.NET开发人员颇为惊愕和失望,以至于提交了阻止这一变更的合并请求,并迅速获得了支持。一名开发人员说:“这是一场真正决定.NET是不是真是一个OSS[开源软件项目]的公关活动。”

为什么这对我们所有人都很重要?

为什么这么重要?虽然热重载是一项工具性质的功能,但这一变更的含义在于,开源.NET SDK被故意削弱功能,似乎只是为了使Visual Studio(这款商业产品附有功能缩减的免费版)比竞争对手更具吸引力,竞争对手包括微软赞助的Visual Studio Code,据说做出决策的是研发最高负责人Julia Liuson。这次变更还是在未与开发社区通气的情况下进行的。前阵子出现了一场危机:微软成立和赞助的独立自由软件组织.NET基金会面临同一个问题:微软对.NET作为开源平台是否真的很上心?这场危机后,开发社区对此似乎见惯不怪。决定遏制热重载的可用性也似乎让外界颇感好奇。开发工具对于像微软这样的平台公司而言具有重要的战略意义:简而言之,它吸引广大程序员支持平台。谁能忘记微软前首席执行官Steve Ballmer及其在2000年微软25周年庆祝活动上呐喊的“开发人员、开发人员、开发人员”?我们尽可一笑了之;然而,知名软件行业分析公司Redmonk以“开发者是新的掌权者这一观点”作为谋生之道。
一款关键业务应用程序可以促进用户在Azure上大笔投入,而微软云是NET的自然目的地,正如谷歌云得益于这家广告公司作为Kubernetes的发明者这个地位一样。Visual Studio Code是免费的,但也是微软迄今在开发人员社区最成功的产品,VS Code中强有力地支持.NET对微软可能带来的好处远远超过对Visual Studio销售带来的任何轻微影响。
另一名开发人员说:“我是不是可以理解为这意味着在.NET 6预览版中已经与dotnet watch配合使用的热重载功能现在被取消了?现在我可以创建一个.NET控制台应用程序,使用dotnet watch运行它,更改文件,并在不重启应用程序的情况下自动重载文件。如果这项功能取消......无非是为了钱。”另一条评论问道:“如果你肆意遏制开发人员在Windows之外的平台上的体验,又怎能指望.NET会成为一种用于跨平台开发的有效解决方案?”
让一项关键的工具功能成为Visual Studio的独享功能存在另一个问题,那就是它剥夺了 macOS和Linux开发人员的这个选项,因为Visual Studio仅面向Windows。微软表示还计划为 Visual Studio Mac推出这项功能,但与VS Code相比,其用途小得多。从社区的炮轰来看,实际情况并不是微软想象的那样,有大量的开发人员工作流依赖于.NET CLI的功能,还好微软听取了社区的声音,及时改正错误。

参考资料:

  • https://www.theregister.com/2021/10/22/microsoft_net_hot_reload_visual_studio/

  • https://github.com/dotnet-foundation/Home/discussions/63

  • https://devblogs.microsoft.com/dotnet/update-on-net-hot-reload-progress-and-visual-studio-2022-highlights/

  • https://devblogs.microsoft.com/dotnet/net-hot-reload-support-via-cli/

微软认真聆听了开源 .NET 开发社区的炮轰: 通过CLI 支持 Hot Reload 功能相关推荐

  1. 开源自定义表单提交系统源码 支持自定义字段功能强大

    分享一个强大的可以自定义字段的表单提交系统源码,完全开源可以二次开发,支持新建N个表单主题,不限制数量,解决所有表单的应用场景.自定义表单模型,任何类型都支持,功能十分强大. 此套万能表单系统厉害了, ...

  2. 同城跑腿小程序开源版开发

    同城跑腿小程序开源版开发 同城跑腿小程序,支持帮取.帮送模式,包含用户端.骑手端.运营后台,支持一键接单/抢单, 为跑腿团队提供技术解决方案,无加密源码,可私有化部署. 功能特性,为你介绍同城跑腿小程 ...

  3. stretchblt 模糊_微软开源持续开发模糊测试工具OneFuzz

    点击蓝字关注我们 近日,微软开源了OneFuzz--一个微软内部使用的,由开发人员驱动的持续开发模糊测试平台.开源后,世界各地的开发人员都可以通过OneFuzz直接从其开发系统接收模糊测试结果. 模糊 ...

  4. 微软发布了开发社区采用.NET Standard的最新信息

    最近,微软发布了开发社区当前采用.NET Standard的最新信息..NET Standard是API的正式规范,现有.NET实现在不同平台的是通用的(从而允许跨平台开发).当前规范(版本2.0)在 ...

  5. 华为正式发布方舟编译器,相关源码已开放下载;微软开源量子开发工具包 QDK;GitHub回应突然断供:也很无可奈何的样子……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  6. TP6框架全新开发社区系统源码开源

    正文: TP6框架全新开发社区系统源码开源,本系统采用thinkphp6+mysql全新开发,非市场垃圾各种系统,可搭建商业化运营 安装教程: 上传程序,设置public  为运行目录 伪静态设置: ...

  7. 微软向Linux表白: 向Linux社区开放60000多项专利

    10 月 10 日,微软在博客中宣布正式加入开放创新网络(Open Invention Network, 简称"OIN"),向所有开源专利联盟的成员开放其专利组合. 对开源,微软是 ...

  8. .NET Core:面向未来的开源跨平台开发技术

    作为一种全新的开源和跨平台的开发平台,.NET Core 历经两年多的开发,终于在于2016年6月27日针对所有主流服务器和桌面操作系统发布 1.0 RTM 版本..NET Core 是一种通用开发平 ...

  9. 微软发布人工智能教育与学习共建社区

    步入2019,人工智能(Artificial Intelligence)的浪潮依然汹涌,各国对于AI人才的需求进一步加大:2月,美国总统特朗普签署行政命令,正式启动美国人工智能计划:加拿大正通过&qu ...

最新文章

  1. 【2】基于zookeeper,quartz,rocketMQ实现集群化定时系统
  2. ST:没错,又是我!继续涨价!
  3. MySQL流浪记(二)—— MySQL介绍及其特性
  4. pickle 在python 2和python 3中兼容性问题
  5. ini文件中文乱码 python_用心盘Python:中文文件处理早晚会用到的将中文转成拼音...
  6. 今天忙着画一个用例图,发现一个好用的工具
  7. Hyperledger Fabric(1) - 整体架构和源码结构
  8. 搜狐新闻数据400w+
  9. COL FIRST_NAME FORMAT A15
  10. 尚驰SHANGCHI汽车美容店尚驰洗车店兰州洗美行业中国的工匠力量
  11. 【商业数据分析】CPC广告投放系统的要素介绍
  12. UML建模工具更新情况(2020年8月更新)
  13. 2022年全球与中国PERC电池市场现状及未来发展趋势
  14. Focusky教程 | Focusky新手入门帮助
  15. 关于佳博热敏打印机添加打印机3019错误
  16. TensorFlow模型构建(过拟合和欠拟合)三
  17. 并发编程(三):线程池基本面试题(必背题目)
  18. 详细的图文Windows电脑设置自动关机/计划关机
  19. 淘宝标题优化软件服务的实现原理(小Q标题优化为例)
  20. 电脑问题解决与实用技巧

热门文章

  1. 教育行业的互联网焦虑症
  2. 一种在未来互联网中的面向用户的云操作系统体系
  3. saltapi java_搭建基于Jenkins salt-api的运维工具
  4. SQL中的left outer join,inner join,right outer join用法 (左右内连接)
  5. UI交互设计教程分享:提高界面交互体验的“葵花宝典”
  6. Java异常处理教程
  7. Tomcat(Windows)
  8. win7将 esc与 capslock 互换
  9. WPF中TreeView.BringIntoView方法的替代方案
  10. vue-router query,parmas,meta传参