.NET 11 发布了,聊聊这版值得关注的变化 - 张善友

.NET 11 发布了,聊聊这版值得关注的变化 - 张善友

💡 原文中文,约3200字,阅读约需8分钟。
📝

内容提要

.NET 11 正式发布,为支持两年的 STS 版本;需要长期支持的团队可继续使用 .NET 10 LTS。C# 15 成为默认语言版本,新增 union types 和 closed hierarchies,集合表达式支持构造参数。SDK 默认启用 Native AOT CLI 宿主,启动更快。EF Core 11 仅支持 .NET 11,新增向量搜索。MAUI 统一使用 CoreCLR。AI 开发链路和工具链持续完善,建议用真实项目升级体验。

🔎

延伸解读

STS 与 LTS 的选择逻辑

文章明确 .NET 11 是支持两年的 STS 版本,而需要长周期支持的团队应继续使用 .NET 10 LTS,两者质量策略相同,仅支持时长不同。同时提醒 .NET 8 和 .NET 9 已于 2026 年 11 月 10 日停止支持。这意味着仍在运行旧版本的项目需要尽快规划升级,但升级目标不必盲目追新,可根据团队对支持周期的需求在 STS 与 LTS 之间做取舍。

语言层面的类型表达升级

C# 15 成为默认语言版本,核心变化是 union types 和 closed hierarchies。前者让返回值可以声明为若干已声明类型之一,switch 表达式会检查是否覆盖所有情况,避免过去用 object 或硬凑公共基类的做法;后者限制类只能在同程序集内派生,便于编译器对整个继承体系做模式检查。文章给出的取舍是:组合已有类型用 union,自己掌控的继承树用 closed。

升级前需要留意的兼容性约束

文章点出几处升级前必须确认的限制:EF Core 11 仅支持 .NET 11,升级前要先确认数据库提供程序是否跟上;Runtime Async 仍是预览特性,上生产前需验证依赖库和诊断工具的兼容性;MAUI 的 Microsoft.Maui.Controls.Compatibility 包已彻底不再发布,仍依赖它的应用必须先迁移。这些约束说明升级不是单纯换 SDK,而要逐项核对依赖链。

工具链与 AI 链路的渐进改进

这版没有颠覆性单点变化,但工具链和 AI 开发链路在持续完善。SDK 默认启用 Native AOT 的 CLI 宿主,--help、查版本等命令不再拉起托管运行时;MSBuild 服务器在命令间保持驻留;Linux 和 macOS 安装包因程序集去重而变小。AI 方面铺开了从 IChatClient 到 MCP 工具的一整条链路。文章建议拿真实项目升级跑一遍,比看 release notes 更有体感。

❓

Q&A

.NET 11 是长期支持版本吗?支持多久?

.NET 11 是 STS(标准期限支持)版本,官方支持两年。需要长期支持的团队应继续使用 .NET 10 LTS,两者质量策略相同,只是支持时长不同。

C# 15 有哪些主要新特性?

C# 15 随 .NET 11 成为默认语言版本,最重要的新特性是 union types(联合类型),允许一个值是若干声明类型之一,switch 表达式会检查是否处理所有情况。同时引入 closed hierarchies(封闭继承体系),只允许在同一程序集内派生。此外,集合表达式支持构造参数,还增加了扩展索引器和带标签的 break/continue。

.NET 11 SDK 在启动速度和工具链上有什么改进?

SDK 默认启用了 Native AOT 的 CLI 宿主,--help、查版本等命令无需启动托管运行时,速度更快。MSBuild 服务器在命令之间保持驻留,避免重复启动。Linux 和 macOS 安装包因程序集去重而变小。此外,新增公共预览工具 dotnetup,用于在用户目录下管理多个 SDK 版本。

EF Core 11 有哪些更新?升级时需要注意什么?

EF Core 11 仅支持 .NET 11,新增向量索引和近似向量搜索(实验性 API),查询翻译继续优化:更多场景去掉多余 JOIN,GroupBy 翻译更好,FullJoin 在支持的关系库上可翻译。复杂类型和 JSON 列可用于 TPT/TPC 继承。升级前需确认数据库提供程序已支持 .NET 11。

MAUI 在 .NET 11 中有什么变化?

MAUI 默认运行时统一为 CoreCLR,移动端、桌面端和其他工作负载使用同一运行时基座。Apple 平台不允许 JIT,采用预编译加解释器。Native AOT 仍是可选项,Android 上为实验性质。开发体验上,XAML 增量热重载(预览,Debug 默认开)可直接修改活页面实例;XAML 文件无需重复写命名空间声明;Windows 默认使用新的 CollectionView2 处理器。注意 Microsoft.Maui.Controls.Compatibility 包已彻底停发,依赖它的应用需先迁移。

如何将现有项目升级到 .NET 11?

安装 .NET 11 SDK,IDE 使用 VS 2026 或 VS Code + C# Dev Kit。新项目可用 dotnet new console -n HelloDotnet11 -f net11.0 创建。老项目迁移建议按顺序进行,并更新 global.json;从 RC 升级的记得换正式版,不要停留在预发布构建上。

🏷️

标签

➡️

继续阅读