写点什么

.NET 11 Preview 3:JIT 再优化,HTTP/3 更快,Blazor 不一样了

作者:Mark Silvester
  • 2026-05-03
    北京
  • 本文字数:1199 字

    阅读完需:约 4 分钟

Microsoft 发布了 .NET 11 Preview 3,这是其即将推出的标准长期支持(Standard Term Support)版本的第三个预览版,计划于 2026 年 11 月正式发布。据报道,此次更新覆盖运行时、SDK、类库、ASP.NET Core、Entity Framework Core、.NET MAUI 以及 C#,并已可从 .NET 官方网站下载。

运行时方面,Microsoft 表示 Runtime Async 不再需要启用预览功能标志。针对 net11.0 的项目现在可以在不将 EnablePreviewFeatures 设置为 true 的情况下启用 runtime-async 特性开关,并新增了对 NativeAOT 和 ReadyToRun 的支持。

JIT 编译器获得了进一步优化,包括将多目标 switch 表达式折叠为无分支检查、移除更多在从末尾索引访问时的冗余边界检查,以及在较旧的 x86 硬件上加速无符号整数到 float 和 double 的转换。此外,Browser 和 WebAssembly 工作负载新增了 WebCIL 负载加载能力,并改进了调试符号。

SDK 和 CLI 方面,dotnet sln 命令现在可以直接创建和编辑解决方案筛选文件,基于文件的应用新增了 #:include 指令,使共享辅助代码可以拆分到独立文件中。dotnet run 命令新增 -e 选项,可从命令行传递环境变量;dotnet watch 现在集成了 Aspire 应用宿主,在崩溃后可自动重新启动,并在 WinForms 和 WPF 应用中更优雅地处理 Ctrl+C。

ASP.NET Core 新增了 Zstandard 响应压缩和请求解压功能,并默认启用。Blazor 的 Virtualize 组件不再假设每个项具有相同高度,而是在运行时根据测量尺寸进行自适应;Kestrel 在不等待控制流的情况下开始处理 HTTP/3 请求,团队表示这可降低新连接的首次请求延迟。

Entity Framework Core 在 ChangeTracker 上引入了新的 GetEntriesForState API,可在不先执行 DetectChanges 的情况下返回指定状态的已跟踪实体。该预览还新增了 RemoveDbContext 和 RemoveExtension 辅助方法,用于在不同提供程序之间切换,Microsoft 指出这在测试中很有用。

对于 .NET MAUI,Map 控件新增了图钉聚合、自定义图钉图标、自定义 JSON 样式,以及针对圆形、多边形和折线的新点击事件。新增了内置的 LongPressGestureRecognizer,默认启用了隐式 XAML 命名空间声明,并在 iOS 上实现了 Permissions.PostNotifications。在 Android 方面,此版本新增了对 Android 17 和 API 37 的预览支持。

C# 15 也增强了 IDE 对 Preview 2 中引入的联合类型(union types)的支持。

namespace System.Runtime.CompilerServices{    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false)]    public sealed class UnionAttribute : Attribute;    public interface IUnion    {        object? Value { get; }    }}
复制代码

本次发布的其他变更还包括容器镜像更新、WPF 和 Windows Forms 修复,以及多项破坏性更改。完整发布说明可在 GitHub 上的 dotnet/core 仓库中查看。

原文链接:

https://www.infoq.com/news/2026/04/dotnet-11-preview-3/