天天看點

如約而至,.NET 5.0 正式版釋出

作者:Richard

翻譯:精緻碼農-王亮

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

說明:文章太長,後面關于 C# 9 語言新特性及平台新特性的部分沒有翻譯,這部分基本都是代碼示例,請直接閱讀原文。關于 C# 9 新特性的介紹也可以閱讀我的系列文章[C# 9.0 新特性]。

我們很高興今天(中原標準時間: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的最新版本。Visual Studio Code 的 C#擴充 已經支援.NET 5.0 和 C#9.0 了。

.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 Framework 仍然是微軟支援的産品,并将繼續支援每個新版本的 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 新特性],該系列還會繼續更新。

作者:精緻碼農-王亮

出處:http://cnblogs.com/willick

聯系:[email protected]

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如有問題或建議,請多多賜教,非常感謝。

繼續閱讀