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

微软近日激怒了开源.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 的企业赞助商。有时候微软做对了。当微软做错了,微软能做的最好的事情就是从错误中吸取教训,更好地向前迈进。

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

268b59e90a36bb0fc559adfc4174afdf.png

最近备受争议的有两个关键部分,一是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已经宣布恢复这项功能。

c5240854bd0e64316295822b47bf9f6b.png

(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[开源软件项目]的公关活动。”

63a2b60e90980d1eb5854d50189594ed.png

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

为什么这么重要?虽然热重载是一项工具性质的功能,但这一变更的含义在于,开源.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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

烽火服务器查询服务器型号,烽火服务器应该起的进程

烽火服务器应该起的进程 内容精选换一换IDE Daemon模块提供接口给Matrix和Framework调用,Matrix通过这些接口可以实现将DVPP预处理结果数据发送到IDE-daemon-hiai进程所在的服务器,IDE-daemon-hiai将结果数据写到文件中;Framework通过调用这些…

(译)元素浮动的那些事儿

原文:http://bitsofco.de/2015/how-floating-works/,作者 Ire Aderinokun 发表于 2015 年 8 月 11 日。 尽管我们现在用浮动布局已经很少了,但是在一些特殊的需求下,它仍然是唯一可行的解决方案。在这些少见的需求中,浮…

无法定位程序输入点dxgiget_美国ABB TZIDC 智能定位器调试方法

一、ABBTZID-C 智能定位器安装及操作气路连接使用与定位器气源端口处标识的标准接口连接气源连接定位器的输出与气动执行器的气缸电气连接根据下列接线端子图以及设计要求进行相应的配线(一般只需11,-12,31,-32)11-12控制信号输入端子(DC4---…

这个黑科技小音箱,不用连蓝牙、一触即播

▲ 点击查看以前用蓝牙音箱,都要打开蓝牙找半天,有时还找不到对应的音箱。找到了,连接又很 …… 漫长 ……一句「请等待蓝牙配对」重复好几遍还没连上,整个人都不好了。而今天介绍的这个开物灵犀感应音箱,不用连蓝牙&a…

Win11运行安卓超详细教程!芜湖起飞!

一、前提Windows 11 版本号为 Build 22000.xxx 或更高版本。您的电脑硬件 BIOS/UEFI 支持虚拟化功能。二、支持本教程适用于 Windows 11 正式版和预览版,包括 Dev 频道、Beta 频道和 Release Preview 频道。本教程适用于搭载 Intel 和 AMD 等处理器的 Windows 11 电…

精品教程--Android实战系列源码与教程

下载源码 知识技能概要: 1. 此套为零基础源码与教程 2. 包括了Android应用开发所有技术 3. 配套2011QQ效果实现项目源码 4. 堪称最详细中文源码注释 ...... 详细介绍: 1. 零基础源码与教程 本套源码与教程,由我们具有丰富开发经验的高级程师针对需要学习…

mdx 聚合函数

聚合函数Aggregation(set_express, numeric_express), Aggregation(http://msdn.microsoft.com/zh-cn/library/ms145524.aspx)执行求和函数, 如果和某些其他求和函数配合的话, 会有变化. 看一个例子 SELECT { ([Measures].[Reseller Sales Amount]), ([M…

被小学数学题套路到哭!这些“逆天”题目,谁做谁知道…

全世界只有3.14 % 的人关注了爆炸吧知识看着孩子的作业题,有多少爸爸妈妈感叹着,幸亏自己毕业早,要不然小学都不能毕业!这不,最近一道简单的小学数学题,又刷爆了家长们的朋友圈。一起往下看。算一算图中的这…

ASP.NET性能优化之构建自定义文件缓存

ASP.NET的输出缓存(即静态HTML)在.NET4.0前一直是基于内存的。这意味着如果我们的站点含有大量的缓存,则很容易消耗掉本机内存。现在,借助于.NET4.0中的OutputCacheProvider,我们可以有多种选择创建自己的缓存。如&…

《Redis核心技术与实战》学习总结(1)

【Redis】| 总结/Edison Zhou0写在开头作为Key/Value键值数据库,Redis的应用非常广泛。在之前多年的工作生涯中,我也只是关注了零散的技术点,没有对Redis建立起一套整体观,但只有建立了系统整体观,才能更好地定位问题和…

饿了么翻车,美团被质疑,马云也赔了40亿,这项技术为什么让人害怕?

全世界只有3.14 % 的人关注了爆炸吧知识人类还没用力AI可能就倒下了8日,一篇《外卖骑手,困在系统里》的文章刷爆了朋友圈。看过的人多半都不好受,除了作为社畜感叹生活不易外,就是感叹外卖系统的AI算法对人类的裹挟是那么的残酷。…

如何强制 .NET 程序以 管理员模式 运行 ?

咨询区 Gold:我有一个 winform 程序部署客户的PC机上,请问我如何通过编码的形式强制让程序以管理员模式运行?回答区 Gaspa79:如果你用的是 Visual Studio 2019,可以通过工具去配置,右键 项目 -> 新建项 …

bitmap 转byte[]后读取_闲谈redis的bitmap

bitmap的原理bitmap就是通过最小的单位bit(8bit 1b 0.001kb)来进行0或者1的设置,表示某个元素对应的值或者状态。一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。优点基于最小的单位bit进行存储,…

序1--年轻正当时(特权)

序1 年轻正当时 这本所谓的书,恐怕不一定能够带还没入门的U杀进FPGA开发的大门,当然也肯定不能达到进阶的目的。但是,姑且应了Bingo老弟所谓的对“图像的直觉”,确实图文并茂的从某一个山寨面把FPGA开发赤裸裸的展现给了大家。 被…

Windows 11 dapr 环境安装

安装其实很简单按照dapr官网操作步骤其实没什么大问题的,不过在没有好的网络访问github的情况下真是有点揪心啦!推荐使用 工具 fastgithub 访问githubFast:Github让Github畅通无阻windows 11 下的安装方式1.安装dapr cli 直接到Releases dapr/cli GitH…

日本原装进口雪平锅,煎炸炒煮全搞定,日本人用了 1000 年

▲ 点击查看小爆我虽然热爱烹饪,但不得不说「下厨房」,也是个坑。光是锅,我就要买好几个。为了蒸包子馒头买蒸锅,为了炒菜买炒锅,偶尔想精致喝热牛奶又买了小奶锅,为了煲汤、做点卤味解解馋,买炖…

Android开发学习笔记:浅谈Content Provider

一.Content Provider的概念介绍 Content Providers是所有应用程序之间数据存储和检索的桥梁,它使得各个应用程序之间实现数据共享。是应用程序间共享数据的唯一途径。Content Provider 主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。其中包括…

VS2010插件之NuGet

Visual Studio(简写VS)是.net程序员开发必不可少的开发工具,随着VS的版本不断的升级和使用用户的扩大,现在针对VS开发了许多的开源免费的插件,大大的方便了程序员的开发,提高了开发效率。今天,我…

C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面

01—前言MEF是微软自家的托管可扩展框架,在这里我把它用成了ioc容器。在Caliburn.Micro框架下,view和viewmodel被注入到CompositionContainer容器中,然后通过名称可以实现view和viewmodel的匹配。利用这一特点,在多人合作项目开发…

女朋友竟然提出这种奇怪的要求......

1 为什么女朋友会提这么奇怪的要求?▼2 我的数学能力▼3 一看就是老龙人了阁下是古墓派传人吧▼4 如果可爱能晋级的话你已经赢了▼5 要做个与众不同的垃圾▼6 女孩子喜欢帅哥是不分年龄的▼‍‍7 单身狗又做错了什么呢?▼扫描这个二维码你将会有机…