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