微软于7月14日正式发布了 .NET 11 软件开发平台的第六个预览版,涵盖运行时、库、框架以及 C# 和 F# 编程语言的多项改进。该版本可从 dotnet.microsoft.com 下载,正式生产版本预计于今年11月发布,第一个预览版于今年2月10日推出。

运行时改进

在运行时方面,runtime-async(.NET 运行时内置的 async/await 实现)在 Preview 6 中继续提速,延续了 Preview 5 中暂停机制的优化成果。异步续延(async continuations)现可选择跳过 ExecutionContext 的捕获与恢复。此外,JIT 编译器现在会为返回 Task 的同步方法单独编译一个 runtime-async 版本,而非通过 thunk 委托调用。JIT 会将该方法的尾调用转换为 runtime-async 调用,并等待原本应返回的 Task,从而避免额外的间接调用层级,提升异步路径的执行效率。

库改进

在库层面,System.Text.Json 现已支持对新 C# 联合类型(union types)的序列化与反序列化。序列化器通过新的 JsonTypeInfoKind.Union 契约类型识别联合体,能够读写当前激活的情况(case),并同时支持基于反射的序列化器和源生成器。新增的 JsonUnionAttribute、JsonUnionCaseInfo 及类型分类器 API,可对 case 的发现和命名方式进行自定义。

C# 改进

在 C# 方面,扩展成员(extension members)现已支持索引器,开发者可在 extension 块中为类型添加 this[...] 访问方式,进一步完善了 .NET 10 中引入的扩展成员功能(此前已支持扩展方法和属性)。扩展索引器的声明方式与 extension 块中的实例索引器相同。

其他亮点

Math.BigMul(long, long, out long) 在 x64 平台上的性能大幅提升。当两个操作数均为64位值且调用方请求高半部分结果时,JIT 将生成单条 MUL r/m64 指令,替代此前的辅助函数调用,消除调用开销,使大数乘法代码更为精简高效。

ASP.NET Core 的最小 API 验证现已端到端支持异步验证器。

在 F# 方面,编译器为多种常见调试场景生成了更精准的序列点,改善了调用参数、for 表达式与推导式、简单字面量绑定以及 if 或 match 条件的断点与单步调试体验。

在 .NET MAUI 方面,Preview 6 推进了跨平台 CollectionView 和 Shell 架构的演进,移除了旧版 Xamarin.Forms 兼容包,并将 Apple 工作负载迁移至稳定版 Xcode 26.6。HybridWebView 的 JavaScript 互操作机制也进行了重构,改为使用源生成器替代反射,不再产生裁剪(trim)或 AOT 编译器警告,并可在完全裁剪和 Native AOT 应用中正常运行。

此外,在 Razor 类库中使用 Microsoft.TypeScript.MSBuild 的项目,现可将 TypeScript 编译输出与 ASP.NET Core 静态 Web 资源正确集成。

Q&A

Q1:.NET 11 Preview 6 什么时候正式发布?

A:.NET 11 Preview 6 于2025年7月14日发布,目前为预览版,可从 dotnet.microsoft.com 下载体验。正式的生产版本预计于2025年11月推出,整个预览周期从今年2月10日的第一个预览版开始。

Q2:.NET 11 Preview 6 对 async/await 做了哪些性能优化?

A:Preview 6 在 runtime-async 方面持续提速。异步续延现可选择跳过 ExecutionContext 的捕获与恢复,减少不必要的上下文开销。同时,JIT 编译器会为返回 Task 的同步方法单独生成 runtime-async 版本,将尾调用直接转换为 runtime-async 调用,消除了原有的额外间接层,使异步路径执行更加高效。

Q3:.NET MAUI 在 Preview 6 中有哪些重要变化?

A:.NET 11 Preview 6 对 .NET MAUI 做出了多项重要调整:推进了跨平台 CollectionView 和 Shell 架构;移除了旧版 Xamarin.Forms 兼容包;将 Apple 工作负载迁移至稳定版 Xcode 26.6。此外,HybridWebView 的 JavaScript 互操作从反射改为源生成器实现,解决了裁剪和 Native AOT 场景下的警告和兼容性问题。

InfoWorld