微軟於2020年11月10日發布.NET 5.0。這是一個主要版本-包括C#9和F#5-具有一系列新功能和引人注目的改進。Microsoft和其他公司的團隊已經在生產中以及性能測試中積極使用它。這些團隊向我們展示了出色的結果,這些結果證明了性能的提高和/或降低其Web應用程序托管成本的機會。自預覽版1開始,我們一直在5.0上運行我們自己的網站。到目前為止,我們已經看到並聽到的是,.NET 5.0帶來了巨大的價值,而無需進行大量的升級。對於您的下一個應用程序來說,這是一個不錯的選擇,並且是從早期.NET Core版本進行的直接升級。我們希望您喜歡在台式機,筆記本電腦和雲實例上使用它。
查看當前使用版本
dotnet --info
安裝的所有版本 包括版本地址
ASP.NET Core,EF Core,C#9和F#5也於同天發布。.NET Conf 2020(我們的免費和虛擬會議)今天在這里舉行,您可以了解所有新版本。
您可以下載適用於Windows,macOS和Linux的.NET 5.0,適用於x86,x64,Arm32,Arm64。
對於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項目做出貢獻的每個人進行令人難以置信的合作了。此版本將第五個主要的.NET版本標記為一個開源項目。現在,在GitHub上的dotnet org中,由個人,小型和大型公司(包括.NET Foundation公司贊助商)組成的大型社區,就.NET的各個方面共同合作。.NET 5.0的改進是許多人,他們的努力,精巧的想法以及他們對平台的關心和熱愛的結果,這些都是Microsoft所負責的項目之外的事情。每天,由致力於.NET的核心團隊組成的團隊,向向.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已按時發布。感謝團隊中實現這一目標的每個人!我知道這並不容易。展望未來,您應該期望.NET 6.0在2021年11月發布。我們打算在每年11月發布新的.NET版本。
該博客的其余部分致力於突出顯示和詳細說明.NET 5.0中的大多數改進。我們的.NET統一願景也有更新。
.NET 5.0亮點
- .NET 5.0已通過在dot.net和Bing.com(版本)上托管了數月來進行了測試。
- 性能有很大的提高跨許多部件,並在將詳細描述在.NET 5.0性能改進,Arm64性能在.NET 5.0,和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和庫新功能的更多信息。
平台和Microsoft支持
.NET 5.0有一個幾乎相同的平台支持矩陣作為.NET 3.1的核心,適用於Windows,MacOS和Linux操作系統。如果在支持的操作系統上使用.NET Core 3.1,則大多數情況下應該應該能夠在同一操作系統版本上采用.NET 5.0。.NET 5.0最重要的新增功能是Windows Arm64。
.NET 5.0是當前版本。這意味着它將在.NET 6.0發布后的三個月內得到支持。因此,我們希望在2022年2月中之前支持.NET5.0。.NET6.0將是LTS版本,並且將像.NET Core 3.1一樣受三年支持。
統一平台願景
去年,我們分享了統一的.NET堆棧和生態系統的願景。給您帶來的價值是,您將能夠使用一組API,語言和工具來針對廣泛的應用程序類型,包括移動,雲,桌面和IoT。您可能會意識到,如今已經可以使用.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運行庫和庫提供一個存儲庫是在各處交付相同產品的前提。它還有助於進行廣泛的更改,這些更改會影響運行時和庫,這些存儲庫以前具有回購邊界。有些人擔心大型回購交易將更難管理。事實並非如此。
在.NET 5.0版本中,Blazor是利用回購合並和.NET統一的最佳示例。Blazor WebAssembly的運行時和庫現在是從合並的dotnet /運行時倉庫中構建的。例如,這意味着服務器上的Blazor WebAssembly和Blazor使用完全相同的代碼。.NET 5.0之前的Blazor並非如此。我們為Blazor WebAssembly采取的方法與在.NET 6.0中使用Xamarin的方法非常相似。List<T>
.NET Framework仍然是受支持的Microsoft產品,並且每個新版本的Windows都將繼續支持.NET Framework。去年,我們宣布已停止向.NET Framework添加新功能,並已向.NET Core添加.NET Framework API。這意味着現在是考慮將.NET Framework應用程序移至.NET Core的絕佳時機。對於.NET Framework客戶端開發人員,.NET 5.0支持Windows窗體和WPF。我們已經從許多開發人員那里聽說,從.NET Framework進行移植非常簡單。對於.NET Framework服務器開發人員,您需要采用ASP.NET Core才能使用.NET 5.0。對於Web Forms開發人員,我們認為Blazor通過高效且更加現代的實現方式提供類似的開發人員體驗。WCF服務器和Workflow用戶可以查看支持這些框架的社區項目。在從.NET框架到.NET核心移植文檔是一個良好的開端。綜上所述,如果您對自己的經驗感到滿意,那么將應用程序保持在.NET Framework上是個不錯的方法。
Windows團隊正在研究Reunion,這是UWP和相關技術的下一步。我們一直與Reunion團隊合作,以確保.NET 5.0和更高版本可以與WinUI和WebView2很好地配合使用。Project Reunion回購是了解最新進展的最佳場所。
讓我們切換到5.0版本中的新增功能。
語言能力
C#9和F#5是.NET 5.0版本的一部分,並包含在.NET 5.0 SDK中。Visual SDK也包含在5.0 SDK中。它不包括語言更改,但進行了改進以支持.NET Core上的Visual Basic應用程序框架。
C#源代碼生成器是C#編譯器的一項重要新功能。從技術上講,它們不屬於C#9,因為它沒有任何語言語法。請參閱新的C#源代碼生成器示例,以幫助您開始使用此新功能。我們希望在.NET 6.0及更高版本中的.NET產品中更多地使用源生成器。
為了親自嘗試新版本,我們中的一些人決定更新dotnet / iot存儲庫,以使用新的C#9語法並以.NET 5.0為目標。通過采用新的語法,這些更改導致刪除了超過2k行代碼。它使用頂級程序,記錄,模式和開關表達式。它也已更新,以利用.NET庫中完整的可空注釋集。我們還更新了.NET IoT文檔。我們將看一下該回購中的一些示例,以探索C#9。
https://devblogs.microsoft.com/dotnet/announcing-net-5-0/?WT.mc_id=DOP-MVP-5003704