.NET标准

维基媒体列表条目

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

.NET标准函式库架构

历史 编辑

.NET Framework长期以来一直是微软视窗平台上的特色与标准,它也成功的实作跨微软视窗平台的应用程式介面,但最为人诟病的一点是它无法跨出微软视窗平台,虽然有Mono这样的Framework可跨平台,但是Mono毕竟不是官方实作,在.NET相容性上也无法达到百分之百相容,而在微软以.NET CoreASP.NET Core投入真正跨平台的架构与框架开发时,势必要面临这个问题。

.NET平台标准的基础是.NET Framework上的可携式类别库[注 5],但为它赋与了更标准的作法以及更容易识别的版本戳记。

.NET平台标准的原理如下所示[1]

  • 平台拥有者自详细的.NET平台标准版本中实作参考组件。
  • 平台拥有者可能会自详细的.NET平台标准版本实作参考组件的子集[注 6]
  • 任何.NET平台标准参考组件中的API表层变更都会影响版本。
  • 低版本的组件总是会相容于高版本。

运作方式 编辑

.NET平台标准由微软提供参考组件,目前的参考组件置于微软的CoreFX储存库[2],每一个定义的命名空间与类别都有一个ref资料夹,里面即是预设的实作码,所有参与.NET平台标准的实作者都必须要实作这些属性与方法,才能相容于.NET平台标准,而CoreFX也有提供实作码,供实作的参考之用,在大多数的情况,各平台的差异性并不高。

当函式库已实作成.NET平台标准相容的函式库后,用户端就可以使用目标平台别称(Target Platform MonikerTPM)来加入其参考,其命名规则是portable-a+b+c+d+...,portable表示它是可携式的类别库,a, b, c, d则是要支援的平台别:[3]

平台 定址名称 说明
.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
已取消的平台 aspnet50
aspnetcore50
winrt


版本 编辑

.NET平台标准使用netstandard来代表一个平台的标准,用户端直接使用netstandard来获取平台的功能,目前各平台对应的.NET平台标准有[1][4][5][6]

目标平台 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之工具时)[7] 4.5 4.5 4.5.1 4.6 4.6.1 4.6.2 vNext 4.6.1
.NET Framework (使用v2之工具时)[8] 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)[3]

支援工具 编辑

目前可使用netstandard版本别称的平台仅有.NET Core以及ASP.NET Core,但未来会扩及其他工具。

下列工具为预定支援 netstadard 版本别称的工具[5]

  • 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

注释 编辑

  1. ^ 应用程式介面,英语:API,Application Programming Interface
  2. ^ 参考组件,英语:Reference Assemblies
  3. ^ 平台拥有者,英语:Platform Owner
  4. ^ 用户端,也就是应用程式
  5. ^ 可携式类别库,英语:Portable Library
  6. ^ 通常是额外的API或物件

参考资料 编辑

  1. ^ 1.0 1.1 .NET Platform Standard. [2016-05-15]. (原始内容存档于2016-05-19). 
  2. ^ CoreFX 儲存庫. [2016-05-15]. (原始内容存档于2018-07-03). 
  3. ^ 3.0 3.1 Target Frameworks. [2022-08-27]. (原始内容存档于2016-05-13). 
  4. ^ dotnet/standard, .NET Platform, 2022-08-22 [2022-08-27], (原始内容存档于2022-08-27) 
  5. ^ 5.0 5.1 gewarren. .NET Standard. docs.microsoft.com. [2022-08-27]. (原始内容存档于2022-08-27) (中文(中国大陆)). 
  6. ^ .NET Standard | Common APIs across all .NET implementations. Microsoft. [2022-08-27]. (原始内容存档于2022-11-19) (美国英语). 
  7. ^ .NET Standard. [2017-05-11]. (原始内容存档于2017-02-05). 
  8. ^ .NET Standard Versions. [2017-05-11]. (原始内容存档于2017-08-05). 

外部链接 编辑