複製鏈接
請複製以下鏈接發送給好友

.NET標準

鎖定
.NET標準(英語:.NET Standard),原稱為.NET平台標準(英語:.NET Platform Standard)是微軟為跨平台所規劃的.NET Framework相關平台於系統之間的相依性標準,在此標準之下,能確保標準的應用程序接口與對象能夠跨平台使用。.NET平台標準是以引用組件的方式存在,其本身並沒有任何實現,真正的實現是由平台擁有者所進行,而客户端使用簡單的NuGet版本戳記即可獲得正確的平台版本。
中文名
.NET標準
外文名
.NET Standard
領    域
計算機

.NET標準歷史

.NET Framework長期以來一直是微軟視窗平台上的特色與標準,它也成功的實現跨微軟視窗平台的應用程序接口,但最為人詬病的一點是它無法跨出微軟視窗平台,雖然有Mono這樣的Framework可跨平台,但是Mono畢竟不是官方實現,在.NET兼容性上也無法達到百分之百兼容,而在微軟以.NET CoreASP.NET Core投入真正跨平台的架構與框架開發時,勢必要面臨這個問題。
.NET平台標準的基礎是.NET Framework上的便攜式類庫,但為它賦與了更標準的作法以及更容易識別的版本戳記。
.NET平台標準的原理如下所示:
  • 平台擁有者自詳細的.NET平台標準版本中實現引用組件。
  • 平台擁有者可能會自詳細的.NET平台標準版本實現引用組件的子集。
  • 任何.NET平台標準引用組件中的API表層變更都會影響版本。
  • 低版本的組件總是會兼容於高版本。 [1] 

.NET標準運作方式

.NET平台標準由微軟提供引用組件,引用組件置於微軟的CoreFX存儲庫,每一個定義的名字空間與類別都有一個ref文件夾,裏面即是默認的實現碼,所有參與.NET平台標準的實現者都必須要實現這些屬性與方法,才能兼容於.NET平台標準,而CoreFX也有提供實現碼,供實現的引用之用,在大多數的情況,各平台的差異性並不高。 [1] 
當庫已實現成.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開發。
sl
對應於Silverlight。
wp
對應於Windows Phone平台。
DNX
dnx
對應於ASP.NET Core for Windows(但可預見的未來可能會被netcore取代)。
DNX Core
dnxcore
對應於ASP.NET Core for Core CLR(但可預見的未來可能會被netcore取代)。
uap
對應於Windows 10的UWP平台。uap對應於uap10、uap10 = Windows 10。
已取消的平台
aspnet50
aspnetcore50
winrt

.NET標準版本

.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。 [2] 

.NET標準對應於便攜式的版本

.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)。 [2] 

.NET標準支持工具

可使用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 [3] 
參考資料
  • 1.    "Install the .NET Framework on Windows 10 and Windows Server 2016". Microsoft. 20 December 2017.
  • 2.    "ASP.NET Core License". GitHub. .NET Foundation. 5 July 2017. Retrieved 14 April 2018.
  • 3.    ".NET Micro Framework". dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.