.NET 11 第五个预览版:带来基于文件的 App 改进、新 C# 特性与 Blazor 验证抖动效果

宾果软件 . 发布于 2026-06-27 15:00:36 . 阅读 18

微软发布了.NET 11 第五个预览版,对运行时、SDK、类库、ASP.NET Core、.NET MAUI、C# 与 Entity Framework Core 进行了更新。


.NET SDK 在基于文件的 App 方面进行了多项改进。根据发布说明,开发者现在可以使用新的#:ref directive跨文件拆分代码,该指令可以将另一个基于文件的 App 作为库引用,而无需先创建项目。更多的命令行工具(包括 package 与 NuGet 命令)现在已经能够识别基于文件的 App 路径。


SDK 还捆绑了模型上下文协议(Model Context Protocol)服务器模板,因此dotnet new mcpserver无需额外包即可运行。此外,项目可以选择开启检查,当已安装的 SDK 存在已知漏洞或已到生命周期末期时会发出警告。面向 net11.0 的控制台与 worker 应用在启用 implicit usings 时会自动包含 System.Net.Http.Json。


C# 语言带来了三项重要的新增功能(均为预览版)。closed class 只能在同一 assembly 内部被派生,文档指出这使编译器能够验证 switch 表达式是否覆盖了所有分支。






public closed record class GateState;
public record class Closed : GateState;
public record class Open(float Percent) : GateState;

static string Describe(GateState state) => state switch
{
Closed => "closed",
Open(var percent) => $"{percent}% open"
};


复制代码















新的union declaration可以创建一个值类型,该类型在一组固定的 case 类型之间取其中一个,并支持模式匹配。关于Unsafe Evolution的工作也在继续,它允许指针类型出现在非 unsafe 上下文之外,同时将对非托管内存读取的危险边界保留在执行操作处。






int value = 42;
int* pointer = &value;

unsafe
{
System.Console.WriteLine(*pointer);
}


复制代码












其次,ASP.NET Core在 Blazor 方面有大量改进。服务端渲染表单现在支持即时的客户端验证,无需服务端往返,并且表单支持异步验证规则(比如,数据库查询)。


验证信息与属性名可以进行本地化。QuickGrid的排序与分页在静态渲染页面上均已可用,独立的 Blazor WebAssembly 应用也新增了名为Gateway的开发服务器,内置 SPA 回退路由。


此外,.NET MAUI收到了大范围的可靠性补丁,根据源信息修复了 CollectionView、Shell、Label 等控件的数十个问题。


Animation 方法新增了对 CancellationToken-aware 的重载。一些控件也得到了更新,BoxView 添加了可接受 brush 的 Fill 属性,Windows Map 控件现在有了由 Azure Maps 支持的真实实现。最低的 Android 版本提升到了 API 24,Essentials.AI 中加入了 Apple Intelligence API。


Entity Framework Core在 dotnet ef tool 中为基于文件的 App 提供了支持,并新增了用于存储默认选项的配置文件。有一个名为 EF 1004 新的分析器警告,它会标记那些会同步运行的 async 查询。SQL Server 2022 兼容性默认就是支持的,生成的 C# 使用文件范围的命名空间。


本次发行的其他改动包括更严格的容器镜像注册表认证校验、CLI 的可选 Native AOT 模式、EF Core 中更整洁的 SQL 查询翻译,以及在 LLM 环境中运行 dotnet test 时禁用 ANSI 输出。


感兴趣的读者可以查看 GitHub 上的完整发行说明dotnet/core 仓库详情。