歷史
.NET Framework長期以來一直是微軟視窗平台上的特色與標準,它也成功的實現跨微軟視窗平台的應用程式接口,但最為人詬病的一點是它無法跨出微軟視窗平台,雖然有Mono這樣的Framework可跨平台,但是Mono畢竟不是官方實現,在.NET兼容性上也無法達到百分之百兼容,而在微軟以.NET Core與ASP.NET Core投入真正跨平台的架構與框架開發時,勢必要面臨這個問題。
.NET平台標準的基礎是.NET Framework上的攜帶型類庫,但為它賦與了更標準的作法以及更容易識別的版本戳記。
.NET平台標準的原理如下所示:
•平台擁有者自詳細的.NET平台標準版本中實現引用組件。
•平台擁有者可能會自詳細的.NET平台標準版本實現引用組件的子集。
•任何.NET平台標準引用組件中的API表層變更都會影響版本。
•低版本的組件總是會兼容於高版本。
運作方式
.NET平台標準由微軟提供引用組件,目前的引用組件置於微軟的CoreFX存儲庫,每一個定義的名字空間與類別都有一個ref資料夾,裡面即是默認的實現碼,所有參與.NET平台標準的實現者都必須要實現這些屬性與方法,才能兼容於.NET平台標準,而CoreFX也有提供實現碼,供實現的引用之用,在大多數的情況,各平台的差異性並不高。
當庫已實現成.NET平台標準兼容的庫後,客戶端就可以使用目標平台別稱(Target Platform Moniker,TPM)來加入其引用,其命名規則是portable-a+b+c+d+...,portable表示它是攜帶型的類庫,a, b, c, d則是要支持的平台別:
平台 | 定址名稱 | 說明 |
.NET Framework | net | 針對Windows與Windows Server的.NET Framework版本,通常是以.NET Framework版本戳記為主,並省略小數點。
|
.NET Core | netcore | 使用於Windows Store App開發的.NET Framework版本。
|
.NET Micro Framework | netmf | 對.net framework的支持。 |
Windows | win | 使用於Windows Store App開發。
|
Silverlight | sl | 對應於Silverlight。
|
Windows Phone | wp | 對應於Windows Phone平台。
|
DNX | dnx | 對應於ASP.NET Core for Windows(但可預見的未來可能會被netcore取代)。 |
DNX Core | dnxcore | 對應於ASP.NET Core for Core CLR(但可預見的未來可能會被netcore取代)。 |
Universal Windows Platform | uap | 對應於Windows 10的UWP平台。uap對應於uap10、uap10 = Windows 10。 |
已取消的平台 | aspnet50 aspnetcore50 winrt |
版本
.NET平台標準使用netstandard來代表一個平台的標準,客戶端直接使用netstandard來獲取平台的功能,目前各平台對應的.NET平台標準有:
目標平台 | 1.0 | 1.1 | 1.2 | 1.3 | 1.4 | 1.5 | 1.6 | 2.0 |
.NET Core | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 2.0 |
.NET Framework (使用v1之工具時) | 4.5 | 4.5 | 4.5.1 | 4.6 | 4.6.1 | 4.6.2 | vNext | 4.6.1 |
.NET Framework (使用v2之工具時) | 4.5 | 4.5 | 4.5.1 | 4.6 | 4.6.1 | 4.6.1 | 4.6.1 | 4.6.1 |
Mono | 4.6 | 4.6 | 4.6 | 4.6 | 4.6 | 4.6 | 4.6 | vNext |
Xamarin.iOS | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | vNext |
Xamarin.Android | 7.0 | 7.0 | 7.0 | 7.0 | 7.0 | 7.0 | 7.0 | vNext |
Universal Windows Platform | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | vNext | vNext | vNext |
Windows | 8.0 | 8.0 | 8.1 | |||||
Windows Phone | 8.1 | 8.1 | 8.1 | |||||
Windows Phone Silverlight | 8.0 |
.NET平台標準的版本戳記為netstandardx.y,其中x表示主版號y表示副版號,例如netstandard10 = .NET Standard 1.0、netstandard1.5 = .NET Standard 1.5。
對應於攜帶型的版本
.NET平台標準對應到之前的攜帶型類庫的版本戳記,若客戶端需要特別針對特定的平台版本進行對應時,可以使用import的功能導入(這是供.NET Core應用程式的功能)。
攜帶型版本引用 | .NET平台標準版本 |
.NET Framework 4.5, Windows 8 | 1.1 |
Windows 8.1, Windows Phone Silverlight 8.1 | 1.0 |
Windows 8.1, Windows Phone 8.1 | 1.2 |
.NET Framework 4.5.1, Windows 8.1 | 1.2 |
.NET Framework 4.5, Windows Phone Silverlight 8 | 1.0 |
.NET Framework 4.5, Windows 8, Windows Phone Silverlight 8 | 1.0 |
Windows Phone 8.1, Windows Phone Silverlight 8.1 | 1.0 |
.NET Framework 4.5, Windows 8, Windows Phone 8.1 | 1.1 |
.NET Framework 4.5.1, Windows 8.1, Windows Phone 8.1 | 1.2 |
Windows 8.1, Windows Phone 8.1, Windows Phone Silverlight 8.1 | 1.0 |
.NET Framework 4.5, Windows 8, Windows Phone 8.1, Windows Phone Silverlight 8 | 1.0 |
針對Mono以及Xamarin等平台,平台標準的起始為1.4(版本戳記為netstandard1.4)。
支持工具
目前可使用netstandard版本別稱的平台僅有.NET Core以及ASP.NET Core,但未來會擴及其他工具。
下列工具為預定支持 netstadard 版本別稱的工具:
•Visual Studio 2015(必須加入NuGet擴展)。
•Visual Studio 2013(必須加入NuGet擴展)。
•Visual Studio 2012(必須加入NuGet擴展)。
•NuGet CLI(指令列接口) 3.x
•NuGet CLI 2.x
•.NET CLI
•Xamarin Studio