本周早些时候,微软发布了.NET 5.0 RC1,这是.NET 5 在11 月正式发布之前的第一个“go-live”版本。.NET 5 是.NET 生态系统的统一平台,将所有组件打包成一个跨平台包。新版本包含了.NET Core 3 的很多改进,包括新的语言版本(C# 9 和F# 5),以及对Windows ARM64 的支持。.NET 5 从 Preview 8 开始就具备了完整的特性,并且已经可以在生产环境中使用。
.NET 5 是去年发布的,该项目的主要目标之一是提供一个单一的、跨平台的.NET 运行时和具有统一运行时行为和开发者体验的框架。在第一次宣布这个项目时,.NET 团队的程序经理 Richard Lander 强调了这个项目的重要性:
未来只会有一个.NET,可以支持 Windows、Linux、macOS、iOS、Android、tvOS、watchOS 和 WebAssembly,等等。我们将引入新的.NET API、运行时功能和语言特性作为.NET 5 的一部分。此外,我们想清楚地告诉大家,.NET 5 是.NET 平台的未来。
图片来源:https://devblogs.microsoft.com/dotnet/introducing-net-5/
从那个时候以来,一些情况发生了变化,主要是由于技术方面的挑战和新冠病毒造成的放缓。因此,一些最初宣布的特性被放到了.NET 6 中。被延迟的特性包括原生的提前编译 (AOT),它最近被确认为在未来进一步采用.NET 的一个关键特性。
即使少了一些特性,.NET 5 仍然包含了很多来自.NET Core 3 的重要改进,包括新的语言版本 (C# 9 和 F# 5) 和对 Windows ARM64 的支持。其他重要的特性包括改进的 JsonSerializer API、单文件应用程序、一组完整的可空引用类型注解,以及对库、垃圾回收器 (GC) 和即时编译器 (JIT) 的众多性能改进。
在最初的RC1 版声明中,Lander 也提到了C#和System.Text.Json.JsonSerializer 的记录类,它“是一个单独的特性,也是一个很好的组合,特别是当你花费大量时间为反序列化JSON 对象编写POCO 类型时”。记录类是不可变的数据类型(C# 9 中最关键的特性之一),也是System.Text.Json 的一个改进,允许将Json 对象反序列化为记录类型。
随着新的候选发行版被标记为“go-live”,.NET 5 也为在生产环境中使用做好了准备。在.NET 5 于11 月正式发布之前,预计还会有另一个候选版本。.NET 5 的所有当前和未来版本都可以在这里找到。当前版本支持Linux、macOS 和Windows。要在Windows 上使用.NET 5 RC1,需要安装Visual Studio 最近的预览版(v16.8 Preview 3)。在本文发布时,最新的Visual Studio for Mac 预览版(v8.8 Preview 3) 只支持之前的.NET 5 版本(Preview 8)。