微软.NET 团队发布了.NET 11的第一个预览版,引入了.NET 运行时、SDK、库、C# 15、F#、ASP.NET Core、Blazor 和.NET MAUI 的更新。正如官方公告中所述,.NET 11 是一个标准的短期支持版本,计划于 2026 年 11 月发布。
这个预览版的主要运行时特性是Runtime Async,被描述为.NET 中异步方法工作方式的重大变化。根据发布说明,自从 C# 5 引入了 async/await,编译器一直负责将异步方法重写为状态机结构,以跟踪在挂起点之间的进度。有了 Runtime Async,运行时本身现在将异步方法视为一等概念,并接管了挂起和恢复方法的责任。
据报道,CoreCLR 对 Runtime Async 的支持在这次预览版中默认启用,不需要环境变量。还增加了原生 AOT 支持。然而,在预览版 1 中,还没有核心运行时库使用运行时异步支持编译,预计这将在即将到来的预览版中改变。想要尝试运行时异步编译的开发者需要启用预览功能,并在他们的项目文件中设置编译器标志。
除了 Runtime Async,预览版开始了将 CoreCLR 从 Mono 运行时迁移到 WebAssembly 的基础工作,尽管这还没有准备好用于通用。这些库通过新的 ZstandardStream 类获得原生Zstandard压缩支持,为 AI 和机器学习工作负载增加了 BFloat16 浮点类型,HMAC 和 KMAC 验证 API,以及 Socket.ConnectAsync 中的 Happy Eyeballs 支持。JIT 改进专注于启动吞吐量和减少关键代码模式中的开销。
// 使用ZstandardStream压缩数据using var compressStream = new ZstandardStream(outputStream, CompressionMode.Compress);await inputStream.CopyToAsync(compressStream);// 使用ZstandardStream解压缩数据using var decompressStream = new ZstandardStream(inputStream, CompressionMode.Decompress);await decompressStream.CopyToAsync(outputStream);
在语言方面,C# 15引入了集合表达式参数和扩展布局支持。F#默认启用了并行编译,据报道,这是多年社区努力的结果。
这次发布的其他变化包括.NET MAUI 中默认的XAML源代码生成,CoreCLR 作为发布构建的默认 Android 运行时,dotnet run 的交互式目标框架和设备选择,新的 SDK 代码分析器,Blazor 的 EnvironmentBoundary 组件,Blazor WebAssembly 中的 IHostedService 支持,项目引用的热重载改进,以及 32 位进程的 GC 堆硬限制。
关于ASP.NET Core,Blazor 在这个预览版中收到了几项新增。正如发布说明中所述,新的 EnvironmentBoundary 组件支持基于托管环境的条件渲染,与 MVC 环境标签助手保持一致。Blazor WebAssembly 现在支持 IHostedService,在浏览器中运行后台服务,并且可以通过 IConfiguration 访问环境变量,进行运行时配置而无需重建应用程序。
框架还增加了新的 Label 和 DisplayName 组件用于表单,QuickGrid行点击事件,相对 URI 导航,二进制文件响应的 OpenAPI 模式支持,以及新的 IOutputCachePolicyProvider 接口用于动态输出缓存策略。WSL 环境中的开发证书现在在 WSL 和 Windows 之间自动信任。
社区对这个预览版的反响褒贬不一。在Reddit上,一些开发者对 Runtime Async 表示热情,有人希望它能解决 async 调用堆栈在第一个 await 之后变得不可靠的长期问题。交互式 dotnet run 选择也受到了广泛赞誉。然而,关于 C# 15 中的集合表达式参数特性的讨论在公告博客帖子评论和 Reddit 上占据了主导地位,顶级博客评论称其为不必要的,其他人质疑语言是否变得过度工程化。
一些开发者还批评发布说明看起来像是 AI 生成的,缺乏以前.NET 预览版中看到的细节和示例。轻松一点说,一位 Reddit 用户对运行时说明中缺乏 AI 营销表示欢迎。
对于感兴趣的读者,完整的发布说明可以在官方.NET GitHub仓库和 Microsoft 文档网站上找到。
原文链接:





