.NET标准

<image>

.NET标准（.NET Standard），原称为.NET平台标准（.NET Platform Standard）是微软为跨平台所规划的.NET Framework相关平台于系统之间的相依性标准，在此标准之下，能确保标准的应用程序接口与物件能够跨平台使用。.NET平台标准是以参考组件的方式存在，其本身并没有任何实作，真正的实作是由平台拥有者所进行，而用户端使用简单的NuGet版本戳记即可获得正确的平台版本。

## 历史

.NET Framework长期以来一直是微软Windows平台上的特色与标准，它也成功的实作跨微软Windows平台的应用程序界面，但最为人诟病的一点是它无法跨出微软Windows平台，虽然有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版本戳记为主，并省略小数点。、net11 = .NET Framework 1.1、net20 = .NET Framework 2.0、net35 = .NET Framework 3.5、net40 = .NET Framework 4.0、net403 = .NET Framework 4.0.3、net45 = .NET Framework 4.5、net451 = .NET Framework 4.5.1、net452 = .NET Framework 4.5.2、net46 = .NET Framework 4.6、net461 = .NET Framework 4.6.1、net462、net47、net471、net472、net48、net481

Microsoft Store（Windows 应用商店）｜netcore｜使用于Windows Store App开发的.NET Framework版本。、netcore目前对应于netcore45、netcore45 = Windows 8、netcore451 = Windows 8.1、netcore50

.NET Micro Framework｜netmf｜对 .NET Micro Framework的支援。

Windows｜win｜使用于Windows Store App开发。、win 对应于 win8、win8 对应于 netcore45、win81 对应于 netcore451、但 win10 并没有对应到 Windows 10

Silverlight｜sl｜对应于Silverlight。、sl4 = 4.0、sl5 = 5.0

Windows Phone｜wp｜对应于Windows Phone平台。、wp对应于wp7、wp7 = Windows Phone 7、wp75 = Windows Phone 7.5、wp8 = Windows Phone 8、wp81 = Windows Phone 8.1

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。

.NET Standard｜netstandard｜、netstandard1.0、netstandard1.1、netstandard1.2、netstandard1.3、netstandard1.4、netstandard1.5、netstandard1.6、netstandard2.0、netstandard2.1

.NET Core｜netcoreapp｜、netcoreapp1.0、netcoreapp1.1、netcoreapp2.0、netcoreapp2.1、netcoreapp2.2、netcoreapp3.0、netcoreapp3.1

.NET｜net｜、net5.0、net6.0、net7.0

Tizen｜tizen｜、tizen3、tizen4

已取消的平台｜aspnet50aspnetcore50winrt

## 版本

.NET平台标准使用netstandard来代表一个平台的标准，用户端直接使用netstandard来获取平台的功能，目前各平台对应的.NET平台标准有：

目标平台｜1.0｜1.1｜1.2｜1.3｜1.4｜1.5｜1.6｜2.0｜2.1

.NET Core｜1.0｜1.0｜1.0｜1.0｜1.0｜1.0｜1.0｜2.0｜3.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｜5.4｜6.4

Xamarin.iOS｜10.0｜10.0｜10.0｜10.0｜10.0｜10.0｜10.0｜10.14｜12.16

Xamarin.Mac｜3.0｜3.0｜3.0｜3.0｜3.0｜3.0｜3.0｜3.8｜5.16

Xamarin.Android｜7.0｜7.0｜7.0｜7.0｜7.0｜7.0｜7.0｜8.0｜10.0

Universal Windows Platform｜10.0｜10.0｜10.0｜10.0｜10.0｜10.0.16299｜10.0.16299｜10.0.16299｜TBD

Unity｜2018.1｜2018.1｜2018.1｜2018.1｜2018.1｜2018.1｜2018.1｜2018.1｜2021.2

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 2022
- Visual Studio 2019
- Visual Studio 2017（版本 15.3 或更高版本）
- Visual Studio 2015（必须加入NuGet扩充套件）。
- Visual Studio 2013（必须加入NuGet扩充套件）。
- Visual Studio 2012（必须加入NuGet扩充套件）。
- NuGet CLI（指令列界面） 3.x
- NuGet CLI 2.x
- .NET CLI
- Xamarin Studio

## 外部链接

- .NET Platform Standard