.NET 5
.NET5.0 于 2020年11月10日正式发布,它是继 .NET Core 3.1之后的下一个主要版本。目前可用于生产环境,但是它不是长支持版本(LTS)。 出于以下两个原因,我们将此新版本命名为 .NET 5,而不是 .NET Core 4:
- 我们跳过了版本编号 4.x,以避免与 .NET Framework 4.x 混淆。
- 我们从名称中删除了“Core”,是为了强调这是 .NET 未来的主要实现。 与 .NET Core 或 .NET Framework 相比,.NET 5 会支持类型更多的应用和平台。
ASP.NET Core 5.0 虽以 .NET 5 为基础,但保留了名称“Core”以避免与 ASP.NET MVC 5 混淆。 同理,Entity Framework Core 5.0 保留了名称“Core”,以避免与 Entity Framework 5 和 Entity Framework 6 混淆。
与 .NET Core 3.1 相比,.NET 5 包含以下改进和新功能:
-
Windows Arm64 和 Arm64 内部函数
-
转储调试的工具支持
-
对于可以为 null 的引用类型,运行时库的批注百分比为 80%
-
性能改进:
.NET 6
.NET 6 提供 .NET 统一计划的最终部分,该计划在 .NET 5 中启动。 .NET 6 在移动、桌面、IoT 和云应用之间统一了 SDK、基础库和运行时。 除了这方面的统一以外,.NET 6 生态系统还提供了以下功能:
- 简化开发:轻松入门。 C# 10 中的新语言功能可减少需要编写的代码量。 利用 Web 堆栈和最小 API 的投资,可以轻松地快速编写更小、更快速的微服务。
- 更佳的性能:.NET 6 是最快的完整堆栈 Web 框架,如果在云中运行,则会降低计算成本。
- 终极工作效率:.Net 6 和 Visual Studio 2022 提供热重载、新的 git 工具、智能代码编辑、可靠的诊断和测试工具以及更好的团队协作。
.NET 6 将作为长期支持 (LTS) 版本得到三年的支持。
.NET 7
.NET 7 是 .NET 6 的后继版本,侧重于统一、新式、简单和快速的特点。 .NET 7 将作为标准期限支持 (STS) 版本(以前称为 Current 版本)支持 18 个月。
本文列出了 .NET 7 的新功能,并提供了每个功能的详细信息的链接。
若要查找已针对 .NET 7 更新的所有 .NET 文章,请参阅 .NET 文档:.NET 7 版本的新增功能。
主要功能改进:
.NET MAUI
.NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。 它将 Android、iOS、macOS 和 Windows API 统一为单个 API。 有关最新更新的信息,请参阅适用于 .NET 7 的 .NET MAUI 中的新增功能。
WPF
.NET 7 的 WPF 包括大量 bug 修复以及性能和辅助功能改进。 有关详细信息,请参阅 .NET 7 中 WPF 的新增功能博客文章。
.NET SDK
.NET 7 SDK 提升了 CLI 模板体验。 它还支持发布到容器,以及使用 NuGet 集中管理包。
性能
性能是 .NET 7 的一个重点,它的所有功能在设计时都考虑到了性能。 此外,.NET 7 还包括以下纯粹以性能为目标的增强功能:
- 栈上替换 (OSR) 是对分层编译的补充。 它允许运行时更改当前正在运行的方法在其执行期间(也就是说,当它“在堆栈上”时)执行的代码。 长时间运行的方法可以在执行过程中切换到更优化的版本。
- 按配置优化 (PGO) 现在适用于 OSR,可以(通过将
<TieredPGO>true</TieredPGO>添加到项目文件)更轻松地启用。 PGO 还可以检测和优化更过内容,例如委托。 - 改进了 Arm64 的代码生成。
- 本机 AOT 以目标平台的文件格式生成独立的可执行文件,没有外部依赖项。 它完全是本机的,没有 IL 或 JIT,并提供快速的启动时间和一个小型的独立部署。 在 .NET 7 中,本机 AOT 侧重于控制台应用,并要求对应用进行剪裁。
针对本机AOT:
- ASP.NET COER 在序列化方面貌似还有点小问题。
- 不支持桌面 GUI 程序。其实从个人的经验来说,桌面端可能对启动速度更加敏感一点,因为c/s程序经常性的打开关闭、打开关闭,如果启动慢用户是很容易察觉的。如果桌面程序能支持 AOT ,那么能大大改进现在 .NET 程序的启动速度,这对用户体验的提升是非常大的。服务端的话本身启动一次后就长期运行,用户不会时时刻刻感受到启动速度带来的影响。另外现在 .NET 程序启动本身就不慢,况且还有 R2R 可以选,正常在100-200ms之间的启动速度已经对用户体验影响不大了。所以 AOT 之后的启动速度的优势不是很大。
- 对 Mono 运行时的性能改进,这为 Blazor WebAssembly、Android 和 iOS 应用提供了支持。
.NET 8
.NET 8 是.NET 7的后继者。它将作为长期支持 (LTS) 版本提供三年的支持
功能改进:
.NET runtime
.NET 8 运行时包括性能、垃圾收集以及核心和扩展库的改进。它还包括用于移动应用程序的新全球化模式以及用于 COM 互操作和配置绑定的新源生成器
.NET SDK
有关 .NET SDK 中的新增功能、本机 AOT、代码分析和诊断的信息,请参阅.NET 8 的 SDK 和工具中的新增功能。
C# 12
C# 12 随 .NET 8 SDK 一起提供。有关详细信息,请参阅C# 12 中的新增功能。
.NET Aspire
## ASP.NET Core
ASP.NET Core 包括对 Blazor、SignalR、最小 API、本机 AOT、Kestrel 和 HTTP.sys 服务器以及身份验证和授权的改进
.NET MAUI
.NET MAUI 包括控件、手势识别器、Windows 应用程序、导航和平台集成的新功能。它还包括一些行为更改和许多性能增强。有关详细信息,请参阅.NET 8 的 .NET MAUI 中的新增功能。
EF Core
Entity Framework Core 包括对复杂类型对象、原始类型集合、JSON 列映射、原始 SQL 查询、延迟加载、跟踪实体访问、模型构建、数学翻译和其他功能的改进。它还包括一种新HierarchyId类型
Windows Forms
Windows 窗体包括对数据绑定、Visual Studio DPI 和高 DPI 的改进。按钮命令现在也已完全启用
WPF
添加了使用硬件加速和新的OpenFolderDialog控件的功能
.NET 9
.NET 9 是.NET 8的后继者,特别关注云原生应用程序和性能。它将作为标准期限支持 (STS) 版本提供18 个月的支持