微软发布了.NET11第五个预览版,对运行时、SDK、类库、ASP.NET Core、.NET MAUI、C#与 Entity Framework Core 都做了更新。
.NET SDK 在基于 File 的 App 方面获得多项改进。根据发布说明,开发者现在可以使用新的#:ref directive跨文件拆分代码,该指令可以将另一个基于 File 的 App 作为库引用,而无需先创建项目。更多的命令行工具(包括 package 与 NuGet 命令)现在已经能够识别基于 File 的 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 中为基于 File 的 App 提供了支持,并新增了用于存储默认选项的配置文件。有一个名为 EF 1004 新的分析器警告,它会标记那些会同步运行的 async 查询。SQL Server 2022 兼容性默认就是支持的,生成的 C#使用文件范围的命名空间。
本次发行的其他改动包括更严格的容器镜像注册表认证校验、CLI 的可选 Native AOT 模式、EF Core 中更整洁的 SQL 查询翻译,以及在 LLM 环境中运行 dotnet test 时禁用 ANSI 输出。
感兴趣的读者可以查看 GitHub 上的完整发行说明与dotnet/core仓库详情。
查看英文原文: .NET 11 Preview 5: Brings File-Based App Improvements, New C# Features, and a Blazor Validation Wave





