.NET標準(英語:.NET Standard),原稱為**.NET平臺標準**(英語:.NET Platform Standard)是微軟為跨平臺所規(guī)劃的.NET Framework相關(guān)平臺于系統(tǒng)之間的相依性標準,在此標準之下,能確保標準的應(yīng)用程序接口與對象能夠跨平臺使用。.NET平臺標準是以引用組件的方式存在,其本身并沒有任何實現(xiàn),真正的實現(xiàn)是由平臺擁有者所進行,而客戶端使用簡單的NuGet版本戳記即可獲得正確的平臺版本。
歷史.NET Framework長期以來一直是微軟視窗平臺上的特色與標準,它也成功的實現(xiàn)跨微軟視窗平臺的應(yīng)用程序接口,但最為人詬病的一點是它無法跨出微軟視窗平臺,雖然有Mono這樣的Framework可跨平臺,但是Mono畢竟不是官方實現(xiàn),在.NET兼容性上也無法達到百分之百兼容,而在微軟以.NET Core與ASP.NET Core投入真正跨平臺的架構(gòu)與框架開發(fā)時,勢必要面臨這個問題。
.NET平臺標準的基礎(chǔ)是.NET Framework上的便攜式類庫,但為它賦與了更標準的作法以及更容易識別的版本戳記。
.NET平臺標準的原理如下所示:
平臺擁有者自詳細的.NET平臺標準版本中實現(xiàn)引用組件。
平臺擁有者可能會自詳細的.NET平臺標準版本實現(xiàn)引用組件的子集。
任何.NET平臺標準引用組件中的API表層變更都會影響版本。
低版本的組件總是會兼容于高版本。1
運作方式.NET平臺標準由微軟提供引用組件,目前的引用組件置于微軟的CoreFX存儲庫,每一個定義的名字空間與類別都有一個ref文件夾,里面即是默認的實現(xiàn)碼,所有參與.NET平臺標準的實現(xiàn)者都必須要實現(xiàn)這些屬性與方法,才能兼容于.NET平臺標準,而CoreFX也有提供實現(xiàn)碼,供實現(xiàn)的引用之用,在大多數(shù)的情況,各平臺的差異性并不高。1
當庫已實現(xiàn)成.NET平臺標準兼容的庫后,客戶端就可以使用目標平臺別稱(Target Platform Moniker,TPM)來加入其引用,其命名規(guī)則是portable-a+b+c+d+...,portable表示它是便攜式的類庫,a, b, c, d則是要支持的平臺別:
|| ||
版本.NET平臺標準使用netstandard來代表一個平臺的標準,客戶端直接使用netstandard來獲取平臺的功能,目前各平臺對應(yīng)的.NET平臺標準有:
|| ||
.NET平臺標準的版本戳記為netstandardx.y,其中x表示主版號y表示副版號,例如netstandard10 = .NET Standard 1.0、netstandard1.5 = .NET Standard 1.5。2
對應(yīng)于便攜式的版本.NET平臺標準對應(yīng)到之前的便攜式類庫的版本戳記,若客戶端需要特別針對特定的平臺版本進行對應(yīng)時,可以使用import的功能導(dǎo)入(這是供.NET Core應(yīng)用程序的功能)。
|| ||
針對Mono以及Xamarin等平臺,平臺標準的起始為1.4(版本戳記為netstandard1.4)。2
支持工具目前可使用netstandard版本別稱的平臺僅有.NET Core以及ASP.NET Core,但未來會擴及其他工具。
下列工具為預(yù)定支持 netstadard 版本別稱的工具:
Visual Studio 2015(必須加入NuGet擴展)。
Visual Studio 2013(必須加入NuGet擴展)。
Visual Studio 2012(必須加入NuGet擴展)。
NuGet CLI(指令列接口) 3.x
NuGet CLI 2.x
.NET CLI
Xamarin Studio3
本詞條內(nèi)容貢獻者為:
王慧維 - 副研究員 - 西南大學(xué)