Skip to content
Go back

.NET 11 Preview 1 发布:全面解析技术更新

.NET 11 Preview 1 发布:全面解析技术更新

微软于 2026 年 2 月 10 日正式发布 .NET 11 Preview 1,这是继 .NET 10 之后的首个预览版本。本次更新涵盖运行时、库、SDK、语言特性、ASP.NET Core、Blazor、.NET MAUI 和 Entity Framework Core 等多个领域,带来了大量性能优化和新功能。

📚 库 (Libraries) 更新

Zstandard 压缩支持

新增对 Zstandard (Zstd) 压缩算法的原生支持,这是一种由 Facebook 开发的高性能压缩算法,提供比传统 gzip 更好的压缩比和速度。开发者可以直接通过 .NET API 使用 Zstd 压缩和解压缩数据。

BFloat16 浮点类型

引入 BFloat16 (Brain Floating Point) 数据类型,这是机器学习领域广泛使用的 16 位浮点格式。相比标准的 Float16,BFloat16 保留了更大的指数范围,牺牲了精度,更适合深度学习模型的训练和推理场景。

ZipArchiveEntry 改进

ZipArchiveEntry 类进行了增强,提供更灵活的压缩包条目管理能力,包括更好的元数据访问和性能优化。

FrozenDictionary 集合表达式支持

FrozenDictionary 现在支持集合表达式 (Collection Expressions) 语法,可以使用更简洁的语法创建不可变字典:

FrozenDictionary<string, int> lookup = [
    "apple" => 1,
    "banana" => 2,
    "cherry" => 3
];

TimeZone 改进

时区处理 API 得到增强,提供更精确的时区转换和夏令时处理能力,改善跨时区应用的开发体验。

Rune 支持扩展

Rune 类型(表示 Unicode 标量值)现在在 StringStringBuilderTextWriter 中获得一致的支持,方便处理 Unicode 字符和 emoji 表情。

MediaTypeMap 用于 MIME 类型查找

新增 MediaTypeMap 工具类,简化文件扩展名与 MIME 类型之间的映射查找,常用于 Web 开发和文件上传场景。

HMAC 和 KMAC 验证 API

提供新的 HMAC (Hash-based Message Authentication Code) 和 KMAC (Keccak Message Authentication Code) 验证 API,增强密码学操作的易用性和安全性。

硬链接创建 API

新增文件系统硬链接 (hard link) 创建 API,允许创建指向同一文件数据的多个文件系统条目,适用于版本控制和备份场景。

DivisionRounding 整数除法模式

新增 DivisionRounding 枚举,支持多种整数除法舍入模式(向上、向下、向零、向最近偶数等),提供更精确的整数运算控制。

Happy Eyeballs 支持

Socket.ConnectAsync 现在支持 Happy Eyeballs 算法 (RFC 8305),在同时尝试 IPv4 和 IPv6 连接时自动选择最快的连接方式,提升网络连接的可靠性和速度。

性能改进

库层面进行了多项性能优化,包括集合操作、字符串处理、序列化和 I/O 操作的性能提升。

⏱️ 运行时 (Runtime) 更新

Runtime Async

引入运行时级别的异步支持,改进垃圾回收和线程调度的异步操作能力,减少阻塞,提升高并发应用的性能。

CoreCLR on WebAssembly

.NET 的 CoreCLR 运行时现在可以在 WebAssembly 上运行,这是一个重大突破。相比之前仅支持的 Mono 运行时,CoreCLR 提供更好的性能和完整的 .NET 功能支持,使 Blazor WebAssembly 应用能够获得接近原生的执行速度。

Interpreter Expansion

解释器功能扩展,提供更完整的 .NET 代码解释执行能力,适用于需要动态代码执行的场景,如脚本引擎和热更新系统。

JIT 性能改进

即时编译器 (JIT) 进行了多项优化:

GC 堆硬限制 (32 位进程)

为 32 位进程引入 GC 堆硬限制配置选项,允许开发者明确控制垃圾回收器可以使用的最大内存量,防止内存溢出。

RISC-V 和 s390x 架构支持

新增对 RISC-Vs390x (IBM Z 架构) 的支持,扩展 .NET 在嵌入式设备和大型主机系统的应用范围。

🛠️ SDK 更新

dotnet run:交互式目标框架和设备选择

执行 dotnet run 时,如果项目配置了多个目标框架或设备,SDK 会提供交互式选择界面,无需手动指定参数:

$ dotnet run
1. net11.0
2. net11.0-android
3. net11.0-ios
Select target framework: _

dotnet test:位置参数

dotnet test 命令现在支持位置参数,可以更简洁地指定测试项目或解决方案:

dotnet test MySolution.sln --filter "Category=Unit"

dotnet watch:热重载增强

dotnet watch 工具获得两项重要改进:

  1. 热重载引用变更:修改项目引用时自动重新加载
  2. 可配置端口:允许自定义开发服务器端口,避免端口冲突

新代码分析器

SDK 集成了新的代码分析器,提供更多编码规范检查和性能优化建议。

🔨 MSBuild 更新

Terminal Logger 改进

终端日志记录器提供更清晰的构建输出,改进进度显示和错误信息格式。

MSBuild 语言和评估修复

修复了多个 MSBuild 语言解析和属性评估的 bug,提高构建稳定性。

新 API 和功能

为 MSBuild 扩展开发者提供新的 API,支持更灵活的构建定制。

性能改进

优化构建过程,特别是大型解决方案的增量构建性能。

C# 语言特性

Collection Expression Arguments

集合表达式现在可以直接作为方法参数传递,无需显式变量声明:

ProcessItems([1, 2, 3, 4, 5]);

void ProcessItems(int[] items) { }

Extended Layout Support

扩展的内存布局控制支持,允许更精细地控制结构体和类的内存排列,适用于互操作和性能关键场景。

F# 语言特性

并行编译默认启用

F# 编译器现在默认启用并行编译,显著提升大型 F# 项目的编译速度。

计算表达式编译优化

针对大量使用计算表达式 (computation expressions) 的代码进行编译速度优化,减少编译时间。

新编译器标志

ML 兼容性移除

移除了传统 ML 语言的兼容性支持,简化编译器实现。

Visual Basic

Preview 1 中 Visual Basic 没有新的语言特性或破坏性变更,主要集中于质量改进和 bug 修复。

🌐 ASP.NET Core & Blazor 更新

EnvironmentBoundary 组件

新增 <EnvironmentBoundary> 组件,允许在 Blazor 应用中明确标记运行环境边界(服务器端/客户端),改善组件渲染控制。

Label 组件用于表单

Blazor 新增 <Label> 组件,提供更好的表单可访问性支持:

<Label For="userName">用户名</Label>
<InputText @bind-Value="userName" id="userName" />

DisplayName 组件

新增 <DisplayName> 组件,自动从模型元数据中提取显示名称,简化表单开发。

QuickGrid OnRowClick 事件

QuickGrid 组件新增 OnRowClick 事件,支持行点击交互:

<QuickGrid Items="products" OnRowClick="HandleRowClick">
    <!-- columns -->
</QuickGrid>

相对导航 RelativeToCurrentUri

Blazor 导航服务新增 RelativeToCurrentUri 选项,支持相对于当前页面的 URL 导航,简化 SPA 路由逻辑。

SignalR ConfigureConnection

为交互式服务器组件提供 ConfigureConnection API,允许自定义 SignalR 连接配置(如超时、重连策略)。

IHostedService 支持 Blazor WebAssembly

Blazor WebAssembly 现在支持 IHostedService,可以在客户端运行后台服务,实现定时任务、轮询等功能。

OpenAPI 二进制文件响应支持

OpenAPI 架构生成器现在支持二进制文件响应类型(如文件下载),自动生成正确的 application/octet-stream 架构。

IOutputCachePolicyProvider

新增 IOutputCachePolicyProvider 接口,允许动态提供输出缓存策略,实现更灵活的缓存控制。

WSL 中自动信任开发证书

在 WSL (Windows Subsystem for Linux) 环境中,开发 HTTPS 证书现在可以自动信任,无需手动配置。

📱 .NET MAUI 更新

XAML 源代码生成默认启用

.NET MAUI 默认启用 XAML 源代码生成,将 XAML 编译为 C# 代码,提升应用启动速度和运行时性能。

.NET for Android

CoreCLR 默认启用

Android 应用现在默认使用 CoreCLR 运行时(替代 Mono),显著提升性能和内存效率。

dotnet run 增强

dotnet run 命令对 Android 应用进行了优化,支持更快的部署和调试体验。

🖥️ Windows Forms

Preview 1 集中于质量改进和 bug 修复,没有重大新功能。

🖥️ Windows Presentation Foundation (WPF)

主要进行质量改进,修复了在 Windows 10 上使用 Fluent 设计窗口背景和 backdrop 的问题。

🎁 Entity Framework Core 更新

TPT/TPC 继承的复杂类型和 JSON 列

使用 TPT (Table Per Type) 或 TPC (Table Per Concrete Type) 继承策略的实体类型,现在支持复杂类型和 JSON 列映射。

一步创建和应用迁移

新命令简化迁移工作流,允许在单个步骤中创建迁移并应用到数据库:

dotnet ef migrations add-and-update InitialCreate

Azure Cosmos DB 改进

事务批处理

支持 Cosmos DB 的事务批处理 API,在单个事务中执行多个操作,保证原子性。

批量执行

新增批量执行支持,显著提升大量数据写入的性能。

会话令牌管理

改进会话令牌 (session token) 的管理,提供更好的一致性控制和性能优化。

📦 容器镜像

Preview 1 没有引入新的容器镜像特性,继续使用 .NET 10 的容器化最佳实践。

🚀 开始使用

要体验 .NET 11 Preview 1,请访问 .NET 11 下载页面 安装 SDK。

开发工具

总结

.NET 11 Preview 1 在性能、开发体验和平台支持方面都带来了显著改进:

作为首个预览版本,建议开发者在测试环境中尝试这些新特性,并向 .NET 团队提供反馈。正式版预计在 2026 年 11 月发布。


相关链接


Tags


Next

.NET 10 的 Zip 与 GZip 压缩改进