写点什么

.NET 11 预览版 1 提供运行时异步、Zstandard 支持和 C#15 功能

作者:Almir Vuk
  • 2026-02-27
    北京
  • 本文字数:1487 字

    阅读完需:约 5 分钟

微软.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 文档网站上找到。

 

原文链接:

https://www.infoq.com/news/2026/02/dotnet-11-preview1/