如约而至,.NET 5.0 今日正式发布

作者:Richard

翻译:精致码农-王亮

原文:http://dwz.win/WFz

说明:

1. 文章太长,后面关于 C# 9 语言新特性及平台新特性的部分没有翻译,这部分基本都是代码示例,请直接阅读原文。关于 C# 9 新特性的介绍也可以阅读我的系列文章[C# 9.0 新特性]

2. 本文有不少超链接,由于微信公众号和头条平台外链会被剔除 URL 地址,所以原本是超链接的内容会显示为纯文本,如果你需要这些信息可以移步到我的知乎和博客园阅读(搜索精致码农可找到我)。

我们很高兴今天(美:11 月 10 日,中:11 月 11 日)能发布 .NET 5.0。这是一个重要的版本–包括 C# 9 和 F# 5–具有一系列广泛的新功能和引人注目的改进。微软和其他公司的团队已经在生产和性能测试中积极使用它。这些团队向我们展示了巨大的成果,展示了性能的提升、降低了的 Web 应用程序托管成本。从 Preview 1 开始,我们已经在 5.0 上运行了自己的网站。从我们目前的所见所闻来看,.NET 5.0 带来了巨大的价值,而且升级无需进行较大的改动。对于你的下一个应用程序来说,它是一个很好的选择,并且可以从早期的 .NET Core 版本直接升级。我们希望能让你喜欢在台式机、笔记本电脑和云计算实例中使用它。

ASP.NET Core 和 EF Core 也在今天发布。

你可以下载适用于 Windows,macOS 和 Linux 的 .NET 5.0(适用于 x86、x64、Arm32 和 Arm64 架构的 CPU ):

  • 安装程序和二进制文件
  • 容器镜像
  • Linux 软件包
  • 发行说明
  • 已知的问题
  • GitHub 问题追踪器
  • .NET 5.0 贡献者

对于 Visual Studio 用户,你需要Visual Studio 16.8或更高版本才能在 Windows 上使用.NET 5.0,并在 macOS 上使用 Visual Studio for Mac的最新版本。在 C#扩展为 Visual Studio 代码已经支持.NET 5.0 和 C#9。

.NET 5.0 是我们.NET 统一历程中的第一个版本。我们构建.NET 5.0 是为了让更多的开发者能够将他们的.NET Framework 代码和应用程序迁移到.NET 5.0 中。我们还在 5.0 中完成了许多早期工作,以便 Xamarin 开发人员能够在我们发布.NET 6.0 时使用统一的.NET 平台。关于.NET 统一的问题,后面还有更多内容。

现在是一个很好的时机来呼吁与每个为.NET 项目做出贡献的人进行美好的合作。现在官方的 GitHub中有大量的个人和大大小小的公司(包括.NET 基金会公司赞助商)组成的大型社区,就.NET 的各个方面共同协作。.NET 5.0 的改进是许多人的努力、聪明的想法以及他们对平台的关心和热爱的结果,所有这些都超过了微软对项目的管理。我们向每一位为.NET 5.0(以及之前的版本)做出贡献的人致以深深的谢意。

我们早在 2019 年 5 月就引入了.NET 5.0,甚至还设定了 2020 年 11 月的发布日期。在那篇文章中可以看到:“我们将在今年 9 月发布.NET Core 3.0,在 2020 年 11 月发布.NET 5,然后我们打算每年 11 月发布一次主要版本的.NET。” 你会认为 “2020 年 11 月 “是一张无法兑现的支票,因为今年面临着种种挑战。然而,.NET 5.0 已经按时发布。感谢团队中的每一个人,让这一切得以实现!我知道这并不容易。展望未来,你应该期待 2021 年 11 月的.NET 6.0。我们打算每年 11 月发布新的.NET 版本。

本篇博文的其余部分专门强调并详细介绍了.NET 5.0 中的大部分改进。此外,还更新了我们的 .NET 统一愿景。

.NET 5.0 亮点

.NET 5.0 有许多重要的改进:

  • .NET 5.0 已经经过了实战检验,已在 dot.net 和 Bing.com 部署了好几个月。
  • 在许多组件中,性能得到了极大的提高,在.NET 5.0 中的性能改进、.NET 5.0 中的 Arm64 性能和gRPC中都有详细介绍。
  • C#9 和 F#5 提供了新的语言改进,例如 C#9 的顶级程序和记录,而 F#5 提供了交互式编程,并提高了.NET 上的功能性编程的性能。
  • .NET 库增强了Json 序列化,正则表达式和 HTTP(HTTP 1.1、HTTP/2)的性能。
  • 由于GC、分层编译等方面的改进,P95 延迟有所下降。
  • 应用部署选项更多更方便了,有了 ClickOnce 客户端应用发布、单文件应用程序、容器镜像尺寸减小,并增加了 Server Core 容器镜像。
  • 平台范围扩大,增加了Windows Arm64和WebAssembly。

我为.NET 5.0 预览文章编写了许多示例。你可能想看看 .NET 5.0 示例以了解有关 C#9 和库的新功能的更多信息。

平台和微软支持

.NET 5.0 具有与 .NET Core 3.1 几乎相同的平台支持矩阵,适用于 Windows、macOS 和 Linux。如果你在受支持的操作系统上使用 .NET Core 3.1,你应该能够在同一操作系统版本上采用 .NET 5.0 的大部分内容。.NET 5.0 最重要的新增功能是 Windows Arm64。

.NET 5.0 是一个当前版本。这意味着它将在.NET 6.0 发布后的三个月内得到支持。因此,我们预计将支持 .NET 5.0 到 2022 年 2 月中旬。.NET 6.0 将是一个 LTS 版本,并将像 .NET Core 3.1 一样支持三年。

统一平台愿景

去年,我们分享了一个统一的 .NET 协议栈和生态系统的愿景。对你的价值在于,你将能够使用一套单一的 API、语言和工具来针对广泛的应用类型,包括移动、云、桌面和物联网。你可能会意识到,今天你已经可以使用 .NET 瞄准一组广泛的平台,然而,工具和 API 在 Web 和 Mobile 之间并不总是相同的,也不总是同时发布的。

作为 .NET 5.0 和 6.0 的一部分,我们正在将 .NET 统一为一个单一的产品体验,同时使你能够只选择你想要使用的 .NET 平台的一部分。如果你想针对 Mobile 而不是 WebAssembly,你不需要下载 WebAssembly 工具,反之亦然,ASP.NET Core 和 WPF 也一样。你也将有一个更简单的方法从命令行获取所有你需要的 .NET 工具和运行时包。我们正在为 .NET 平台组件启用包管理器体验(包括使用现有的包管理器)。这对于很多场景来说都会有很大的帮助。开发环境的快速构建和 CI/CD 可能会是最大的受益者。

我们原本打算用 .NET 5.0 来提供全部的统一愿景,但在全球大流行之后,我们不得不适应客户不断变化的需求。我们一直在与来自世界各地的公司团队合作,这些公司需要帮助他们加快采用云技术。他们也必须适应客户不断变化的需求。因此,我们正在通过两个版本来实现这一愿景。

实现这一愿景的第一步是整合.NET 资源库,包括 Mono 的大部分子集。为 .NET 的运行时和库提供一个资源库是在所有地方提供相同产品的前提条件。它还有助于进行影响运行时和库的广泛更改,而以前的版本库是有边界的。有些人担心一个大的 repo 会更难管理,事实证明并非如此。

在 .NET 5.0 版本中,Blazor 是利用 repo 整合和.NET 统一的最好例子。现在,Blazor WebAssembly的运行时和库都是由合并后的dotnet/runtime repo 构建的。这意味着 Blazor WebAssembly 和服务器上的 Blazor 使用完全相同的代码,例如List<T>。在.NET 5.0 之前,Blazor 的情况并非如此。我们对 Blazor WebAssembly 采用的方法与我们在 .NET 6.0 中对 Xamarin 采用的方法非常相似。

.NET 框架仍然是微软支持的产品,并将继续支持每个新版本的 Windows。我们去年宣布,我们已经停止向 .NET Framework 添加新功能,并完成了向 .NET Core 添加 .NET Framework API 的工作。这意味着,现在是考虑将你的 .NET Framework 应用程序转移到 .NET Core 的好时机。对于 .NET Framework 客户端开发者来说,.NET 5.0 支持 Windows Forms 和 WPF。我们从许多开发人员那里听说,可以直接从 .NET Framework 移植。对于.NET Framework 服务器开发者来说,你需要采用 ASP.NET Core 来使用 .NET 5.0。对于 Web Forms 开发人员来说,我们认为 Blazor 提供了类似的开发体验,其实现效率更高、更现代化。WCF 服务器和工作流用户可以寻找支持这些框架的社区项目。从 .NET Framework 到 .NET Core 的移植文档是一个很好的开始。说了这么多,如果你对自己的体验感到满意的话,将你的应用保持在 .NET Framework 上是一个不错的方法。

Windows 团队正在研究 Project Reunion,作为 UWP 和相关技术的下一步任务。我们一直在与 Reunion 团队合作,以确保 .NET 5.0 及以后的版本能够与 WinUI 和 WebView2 良好地配合。

让我们来看看 5.0 版本有哪些新内容。

译注:原文后面概括了一些 C# 9 语言新特性及平台新特性,基本都是代码示例,请移步原文查看(老夫实在翻译不动了)。关于 C# 9 新特性更详细的介绍可以阅读我的系列文章[C# 9.0 新特性],该系列还会继续更新。

原文出处:微信公众号【 liamwang 精致码农】

原文链接:https://mp.weixin.qq.com/s/OSXYmSyyaVmcsPGNyhWG6g

本文观点不代表Dotnet9立场,转载请联系原作者。

发表评论

登录后才能评论