.NET5發布


 

.NET Conf 2020於2020年11月10日舉行,會上正式發布.NET 5。.NET 5是.NET平台統一的第一個版本。

 

.NET 5 SDK和Visual Studio 2019 v16.8版本在11月10日已經提供下載,更新Visual Studio 2019 版本至v16.8以支持.NET 5。

 

此次更新,更新了很多重要功能。包括但不僅限於以下內容:

 

1、C# 9.0

  1. 記錄
  2. 僅限 Init 的資源庫
  3. 頂級語句
  4. 模式匹配增強功能
  5. 本機大小的整數
  6. 函數指針
  7. 禁止發出 localsinit 標志
  8. 目標類型的新表達式
  9. 靜態匿名函數
  10. 目標類型的條件表達式
  11. 協變返回類型
  12. 擴展 GetEnumerator 支持 foreach 循環
  13. Lambda 棄元參數
  14. 本地函數的屬性
  15. 模塊初始值設定項
  16. 分部方法的新功能

 

2、性能提高

Performance Improvements in .NET 5.0Arm64 Performance in .NET 5.0, 和 gRPC.

 

3、.NET自帶類庫增強

Json序列化、正則表達式和and HTTP (HTTP 1.1HTTP/2)。

 

  • .NET 5.0對System.Text.Json進行了顯着改進,以提高性能,可靠性。https://github.com/dotnet/runtime/issues/41313
  • HttpClient類增加了一些擴展方法
  •  改進了對不可變類型的支持
  • 新增JsonSerializer支持record和fields類型

 

4、P95延遲減少

由於GC,分層編譯和其他方面的改進,P95延遲有所減少。https://docs.microsoft.com/en-us/azure/internet-analyzer/internet-analyzer-scorecard

 

5、增加對Windows ARM64WebAssembly的支持

 .NET應用程序現在可以在Windows Arm64上本機運行。 這是在.NET Core 3.0中添加的對Linux Arm64的支持(對glibc和musl的支持)。 使用.NET 5.0,您可以在Windows Arm64設備(例如Surface Pro X)上開發和運行應用程序。

WPF和Winform目前還不支持運行在Windows Arm64設備上,需要等待后續更新。

此外,Windows ARM64性能也得到了提升,https://github.com/dotnet/runtime/issues/35853

 

6、Windows Form設計器增強

在Visual Studio 2019 16.8版本中,Windows Form設計器得到了增強(針對.NET Core 3.1和.NET 5)。

現在已經支持全部Winform的控件以及Telerik Winform控件。

設計器現在已經包括:拖放,選擇,移動和調整大小;剪切/復制/粘貼/刪除控件,與屬性窗口集成,事件生成等功能。 數據綁定和對更廣泛的第三方控件的支持將會在后續版本中實現

反正這些在.Net Framework版本中很早就已經有了,這次更新也就不算新鮮事了。

 

7、TargetFramework已經更新為net5.0

https://www.cnblogs.com/zhaotianff/p/13440107.html這篇WPF的文章中,可以看到以前的TargetFrameWork是netcoreapp3.1,現在已經是net5.0了

 

在后續的.NET 6.0版本中,Xamarin項目還能通過TargetFramework來描述操作系統依賴性,定位iOS和Android。

 

針對桌面項目(WPF、Winform和WinRT),TargetFramework已經被更新為net5.0-windows,還可以指定操作系統版本,如 net5.0-windows7 、net5.0-windows10.0.17763.0 。

這也就意味着在WPF中可以直接引用Winform的類庫,不再需要修改.csproj文件。反之亦是如此。

如果需要使用WinRT APIs,就必須指定Windows 10的版本,如net5.0-windows10.0.15063.0(Windows v1703)

 

如果有跨平台需求,需要注意以下幾點:

  1. net5.0是.NET 5.0的新目標框架(TFM)。
  2. net5.0結合並替代了netcoreapp和netstandard TFM。(https://docs.microsoft.com/en-us/dotnet/standard/frameworks#supported-target-frameworks)
  3. net5.0支持.NET Framework兼容模式
  4. net5.0-windows用於標識使用Windows系統特定的功能(APIs),包括Windows窗體,WPF和WinRT API。
  5. 在.NET 6.0中將添加net6.0-ios和net6.0-android,默認TFM 是net6.0。
  6. 特定於操作系統的TFM可以包含操作系統版本號,例如net6.0-ios14。
  7. 可移植API,如ASP.NET Core將可與net5.0一起使用。 在net6.0中,Xamarin forms也將支持該功能。

 

說明:

在Visual Studio 2019 16.8/16.8.1版本中,控制台應用程序、WPF、Winform的目標框架仍然是.Net Core 3.1,需要手動修改成.NET 5.0。而ASP.NET項目,默認目標框架已經是.NET 5.0。

 

8、與WinRT互操作(重大更改)

一個重大更改就是,WinRT APIs現在已經作為.NET 5.0的一部分,現有的WinRT互操作方式已從.NET運行時中刪除。 這也就意味着使用了WinRT庫函數的.Net Core 3.x應用程序在升級到.NET 5.0時,需要重新構建。

這也就意味着,不再需要手動引用任何組件,導入命名空間就可以直接使用WinRT APIs。

 

在Windows 8操作系統中,微軟推出了WinRT,一種新的運行時。到Windows 10時代,WinRT已經變成UWP,現在又叫回了WinRT,還是那種熟悉的感覺。雖然我不做這方面的開發,但以前讀過一本書叫Windows Runtime via C#,當時就覺得WinRT很強。

 

9、Native Export(原生導出?)

這個功能主要跨平台用,我目前用不到,可訪問以下鏈接獲取詳細信息https://github.com/AaronRobinsonMSFT/DNNE

 

10、在Windows上支持(ICU International Components for Unicode)

ICU庫用於Unicode和全球化支持,以前僅在Linux和macOS上使用。

 

11、容器

這一塊我目前用不到

 

12、單文件應用

單個文件應用程序作為單個文件發布和部署。 該應用程序及其依賴項都包含在該文件中。 當應用程序運行時,依賴項直接從該文件加載到內存中。

這個功能目前主要是針對 Linux的。這功能挺好的,坐等支持Windows。

 

關於.NET 5的詳細介紹,可以訪問以下鏈接:

https://devblogs.microsoft.com/dotnet/announcing-net-5-0/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM