微软近日宣布推出 .NET 11 开源开发平台的第七个预览版本,本次更新涵盖异步方法的分层编译、CoreCLR 向 WebAssembly 的迁移进展等多项改进。
开发者现可从 dotnet.microsoft.com 下载 Preview 7,.NET 11 正式版预计于今年 11 月发布。
.NET 11 Preview 7 于 8 月 11 日正式发布,据微软介绍,本次更新覆盖类库、.NET 运行时、SDK、C#、ASP.NET Core、.NET MAUI、Entity Framework Core、F# 以及 Windows Forms 等多个模块。
运行时异步方面的改进
在最新预览版中,runtime-async(即运行时内置的 async/await 实现)与编译器生成的状态机模型之间的差距进一步缩小。异步方法现已接入分层编译流水线。此前,异步方法会绕过分层机制,始终运行 tier0 代码——该代码优先追求编译速度,而非稳态吞吐量。
CoreCLR 移植至 WebAssembly
在 WebAssembly 方向,.NET 11 正在推进将 CoreCLR 迁移至 WebAssembly 的工作,采用可移植的"解释器 + R2R(ReadyToRun)"模型,并复用 RyuJIT 进行提前编译(AOT)代码生成。该配置在 Preview 6 中已可正常启动,Preview 7 进一步实现了 CoreCLR 库测试套件的端到端完整运行。
C# 语言与编译器更新
Preview 7 还带来了 C# 语言及编译器层面的更新,其中包括标签式 break 和 continue 语法。在 C# 15 中,break 和 continue 可以指定外层循环或 switch 的名称,允许开发者在内层结构中直接退出或继续外层构造,无需借助标志变量或 goto 语句传递状态。此外,C# 15 引入的 union 类型采用"Try-Both"匹配方式:当某个模式应用于 union 值时,编译器首先对 union 实例本身进行模式匹配,若匹配失败,则进一步对 union 内部包含的 Value 执行匹配。
其他更新亮点
System.Net.Http 新增三个 HttpContent 包装类,支持对请求体进行传输层压缩,分别是 GZipCompressedContent、BrotliCompressedContent 和 ZstandardCompressedContent,均位于 System.Net.Http 命名空间下。
dotnet test 持续扩展设备导向能力,与 dotnet run 在 MAUI、Android 及 iOS 项目中已有的功能保持一致。
Preview 7 新增五个 Blazor 分析器,有助于提升代码质量,所有分析器默认开启,警告级别均为 Warning。
.NET 11 Preview 7 发布于 7 月 14 日 .NET 11 Preview 6 公告之后,延续了微软对该平台的持续迭代节奏。
Q&A
Q1:.NET 11 Preview 7 什么时候可以正式使用?
A:.NET 11 Preview 7 已于 2025 年 8 月 11 日发布,开发者现在就可以从 dotnet.microsoft.com 下载体验。不过这仍是预览版本,正式生产可用的 .NET 11 稳定版预计将于 2025 年 11 月正式发布。
Q2:.NET 11 Preview 7 中 C# 15 的标签式 break 和 continue 有什么用?
A:C# 15 引入的标签式 break 和 continue 语法,允许开发者在嵌套循环或 switch 结构中,直接指定要退出或继续的外层构造,不再需要通过设置标志变量或使用 goto 语句来传递控制流状态,代码逻辑更加清晰简洁,减少了嵌套结构中常见的绕行写法。
Q3:.NET 11 Preview 7 对 WebAssembly 的支持有哪些新进展?
A:.NET 11 正在将 CoreCLR 迁移至 WebAssembly,采用"解释器 + ReadyToRun"组合模型,并复用 RyuJIT 完成提前编译。在 Preview 6 中该配置已可成功启动,而 Preview 7 进一步实现了 CoreCLR 库测试套件的端到端完整运行,标志着这一迁移工作取得了重要里程碑进展。
