Windows Desktop Runtime 11.0 是微软最新发布的开源免费 .NET 框架运行库,简称 .NET 11。作为 .NET 10 之后的首个预览版本,它主要用于支持 Windows 窗体和 WPF 应用程序,并为依赖这些组件的应用提供必要的工具和库。
这次更新涵盖了多个关键领域:运行时、SDK、类库、C#、F#、ASP.NET Core、Blazor 和 .NET MAUI 等。最值得一提的是,微软正在推进 CoreCLR 对 Mono 的替代工作,这将带来更高效的性能优化。此外,.NET 11 还引入了新的“运行时级别异步机制”,提升了多核 JIT 的性能表现,并改进了启动时间和代码模式的开销。
在语言支持方面,C# 和 F# 都有新版本推出,C# 15 引入了集合表达式参数和扩展布局支持,而 F# 11 则移除了对 ML 的兼容性,进一步优化了编译速度。开发工具方面,dotnet run 现在支持交互式选择目标框架和设备,dotnet watch 可以实时处理引用更改,热重载功能更强大。
对于移动端开发者来说,CoreCLR 已成为 Android 构建的默认运行时,这将提升与 .NET 其他组件的兼容性。同时,.NET 11 还新增了对 Zstandard 压缩算法的支持,并改进了时间转换性能。
总的来说,.NET 11 的发布为开发者提供了更强大的工具和优化,尤其是在性能和开发体验方面。如果你正在使用 Visual Studio 或 Visual Studio Code,不妨搭配最新的 C# Dev Kit 扩展来体验这些新功能。这绝对是一个值得关注的更新!

基本介绍
1、完整版
11.0.100-preview.1.26104.118
2、包含的运行时
.NET 运行时 11.0.0-preview.1.26104.118
ASP.NET Core 运行时 11.0.0-preview.1.26104.118
.NET 桌面运行时 11.0.0-preview.1.26104.118
3、语言支持
C# 14.0
F# 10.0
Visual Basic 17.13
.NET11软件特性
一、WebAssembly 方面
微软正在推进将 .NET WebAssembly 从 Mono 运行时迁移到 CoreCLR。微软从 .NET 11 开始启动将 CoreCLR 引入 WebAssembly 的初步工作,但该特性在 Preview 1 中尚未达到可正式发布的状态。作为相关工作的一部分,.NET 11 Preview 1 开始启用面向 Wasm 的 RyuJit,用于 AOT 编译。
微软正努力进一步减少 .NET 对 Mono 的依赖。尽管这一变化对开发者而言“感知不强”,但 Mono 仍被用于 .NET MAUI(Multi-platform App UI)开发的移动应用,以及 WebAssembly。此外,Mono 项目已移交给 WineHQ,但微软仍在 .NET 代码中维护一份 Mono 运行时。
二、移动端方面
.NET 11 的一个变化是 CoreCLR 成为 Android 构建的默认运行时。有报道指出,在 .NET 10 中该功能仍属实验性,而在 .NET 11 中已成为默认配置,微软称这将改善与 .NET 其他部分的兼容性,并降低启动时间。
三、类库更新方面
.NET 11 引入 Zstandard(Zstd)压缩支持。与现有算法相比,Zstd 可在保持竞争力压缩比的同时,实现更快的压缩与解压性能;新增 API 覆盖流式、一次性(one-shot)以及基于字典的压缩与解压能力。此外,.NET 11 还加入了“按年份缓存时区转换”的机制,用于提升时间转换性能。该缓存以 UTC 格式存储某一年的所有转换信息,减少转换过程中重复规则查询。
四、语言层面
.NET 11 Preview 1 引入 C# 15 与 F# 11 对应更新。其中 C# 15 增加两项新特性:
1、其一为“集合表达式参数”,用于在集合表达式无法直接生成所需集合类型的场景下,为开发者提供在语法中指定容量、比较器或其他构造参数的能力;
2、其二为“扩展布局支持”,当类型应用 System.Runtime.InteropServices.ExtendedLayoutAttribute 时,C# 编译器会发出 TypeAttributes.ExtendedLayout。该特性主要供 .NET 运行时团队在互操作场景中使用。
五、F# 11 方面
微软在 .NET 11 Preview 1 中默认启用并行编译,并提升了对计算表达式密集代码的编译速度,同时加入一些较小的新语言特性。此外,F# 移除了 ML 兼容性,此前为兼容 ML 而保留的 asr、land、lor、lsl、lsr、lxor 等关键字现在可作为标识符使用。微软称,F# 最初作为运行在 .NET 上的 OCaml 方言诞生,编译器长期保留了诸如 .ml、.mli 文件扩展名、#light "off" 指令以及 --mlcompatibility 等兼容性构造。如今这一阶段宣告结束,编译器、解析器和测试套件中约 7000 行遗留代码已被移除。
六、开发工具与 SDK 方面
.NET 11 Preview 1 带来 CLI 命令改进、新的 .NET 代码分析器等变化。dotnet run(IT之家注: .NET CLI 中的一个核心命令)将增强交互式选择工作流,为 .NET MAUI 与移动开发场景的改进打基础。
七、 Web 框架方面
Blazor 新增 EnvironmentBoundary 组件,用于根据宿主环境进行条件渲染,类似于 MVC 的环境标签辅助器,可在服务器与 WebAssembly 两种托管模式中提供一致的渲染方式。
八、 .NET MAUI 方面
微软将 XAML 源生成设为默认,以提升构建时间、调试性能以及发布运行时性能,并称调试构建的应用行为将与发布构建更一致。此外,WPF(Windows Presentation Foundation)在 Windows 10 上针对 Fluent 窗口背景与底色问题进行了修复。
重要新功能和改进
一、CLI 命令改进
dotnet run:交互式目标框架和设备选择
dotnet test:位置参数
dotnet watch:热重载引用更改和可配置端口
dotnet 格式:隐藏严重性支持
代码分析器
新的分析器
新.NET SDK功能
发布引用符号属性
其他变更
选择退出自动UTF-8控制台编码(主要针对Windows用户)
基于文件的应用程序的行为更类似于基于项目的应用程序
二、CLI命令改进
dotnet run:交互式目标框架和设备选择
dotnet run 已得到显著增强,能够支持交互式选择工作流,为改进 .NET MAUI 和移动开发场景奠定了基础。
三、目标框架选择
在运行未指定--framework的多目标项目时,dotnet run现在会以交互方式提示您使用箭头键选择目标框架(由Spectre.Console提供支持)。在非交互式终端中,则会以格式化错误的形式列出可用的框架。
dotnet watch:热重载引用更改和可配置端口
四、支持更改项目和包引用
dotnet watch 现在可以在热重载会话期间在运行时处理添加项目和包引用。以前,添加新的 PackageReference 或 ProjectReference 需要重新启动应用程序。现在,当添加引用时:
Roslyn 验证更改,并确定哪些项目需要重新部署。
dotnet watch 执行 ReferenceCopyLocalPathsOutputGroup 目标,以将新的依赖项复制到输出目录中。
运行中的应用程序中的增量应用器通过AssemblyResolving事件加载新的程序集。
这使得在迭代多项目解决方案时,开发工作流程更加流畅,无需重新启动应用程序。
五、可配置的浏览器刷新端口
新的DOTNET_WATCH_AUTO_RELOAD_WS_PORT环境变量允许您配置dotnet watch用于浏览器刷新的WebSocket端口。该变量是对现有DOTNET_WATCH_AUTO_RELOAD_WS_HOSTNAME变量的补充,在基于容器的开发工作流程中特别有用,因为在此类流程中需要提前定义特定的端口转发规则。
六、发布引用符号属性
新的“PublishReferenceSymbols”MSBuild属性可控制发布输出中是否包含来自引用项目的.pdb文件。该属性是对现有“PublishDocumentationFile”、“PublishReferencesDocumentationFiles”和“CopyOutputSymbolsToPublishDirectory”属性的补充,以便完全控制要发布的工件。
七、关闭自动UTF-8控制台编码(主要针对Windows用户)
MSBuild会自动将控制台编码设置为UTF-8,以确保跨平台输出的一致性。然而,在某些非英语环境(如日语或中文系统)中,当将控制台输出重定向到管道时,由于无法检测目标编码,UTF-8编码可能会导致文本乱码。





























共有 0条评论