.NET 5 自身就是一个 .NET Standard
微軟2014年開源.NET的動作是實現一個全新的.NET Core?,從而引入了一個新的問題:選擇代碼的編譯目標變得困難,需要面對3個環境。因此微軟為了解決這個問題,引入了兩個主要的概念:目標框架別名(Target Framework Moniker)和.Net Standard。
目標框架別名(Target Framework Moniker)是.NET Core 中應用程序所針對的框架類型 + 版本號的 ID。我們可以把別名分成兩個不同的類型:跨平臺的目標:.Net Standard 和平臺實現,如.Net Framework、.Net Core?和 Xamarin.
.Net Standard 庫是.Net Core 可移植性的核心。其目的是定義標準的 API 集。這些 API,如集合、線程、反射,是由.Net Core、.Net Framework、Xamarin 和 Mono 等平臺實現的。它們是開發人員用來構建自己的庫和應用程序的基本構建塊。
隨著.NET?5的完成,微軟通過5年時間把代碼的編譯目標的選擇困難問題解決了,而且變得更加簡單,因此微軟 .NET 官方博客近日發布了一篇談論 .NET Standard 未來的文章。文章作者是 .NET 項目經理 Immo,他在文章中指出未來 .NET Standard 將會被 .NET 5 取代,還對 .NET 5 如何改進代碼共享以及取代 .NET Standard 這個說法進行了解釋,此外還介紹了仍然需要 .NET Standard 的情況。
Immo 表示不會再為 .NET Standard 發布新版本,但 .NET 5 及其所有未來的版本將繼續支持 .NET Standard 2.1 和更早版本。他建議開發者可以考慮將net5.0(以及未來的版本)作為共享代碼的基礎,甚至可以將 .NET 5 視為 .NET Standard vNext。
因為 .NET 5 將會是具有統一功能和 API 的單一產品,可用于開發 Windows 桌面應用程序、跨平臺移動應用程序、控制臺應用程序,以及云端服務和網站。而且為了更好地體現 .NET 5 的定位,微軟還更新了目標框架名稱(TFM, Target Framework Name)。
.NET Standard 的出現是為了提供 .NET 統一跨平臺的基礎函數庫,方便開發者編寫在任何平臺執行的函數庫,但 Immo 指出了 .NET Standard 存在 3 個問題,包括版本更新緩慢、.NET Standard 版本與 .NET 實現的映射較為復雜以及 .NET Standard 包含了特定于平臺的功能,因此無法靜態驗證代碼是否真正可移植。
.NET 5 針對這些問題均提供了解決方案,而且 .NET 5 和未來的版本將會支持 .NET Standard 2.1 以及更早版本,因此開發者可以不需要更新現有程序,不過如果開發者希望使用額外的 Runtime 功能、語言功能以及 API,可以選擇將 .NET Standard 升級使用 .NET 5。
對于新項目應該從 .NET Standard 2.0 開始還是直接使用?.NET 5 的問題,Immo 認為主要取決于應用程序組件和可重用的庫。
當開發者使用函數庫將應用程序分解成多個組件,為簡單起見,組成應用程序的所有項目最好都位于同一版本的 .NET 上,此時可以考慮 .NET 5。
如果要構建計劃在 NuGet 上使用的可重用庫,則需要考慮可用的功能集:.NET Standard 2.0 是 .NET Framework 支持 .NET Standard 的最高版本,其提供了龐大的功能集,覆蓋范圍廣。
總結:
用于在 .NET Framework 和所有其他平臺之間共享代碼,使用netstandard2.0
用于在 Mono,Xamarin 和 .NET Core 3.x 之間共享代碼,使用netstandard2.1
向后共享代碼,使用net5.0
總結
以上是生活随笔為你收集整理的.NET 5 自身就是一个 .NET Standard的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dotNET Core:编码规范
- 下一篇: 保护 .NET Core 项目的敏感信息