.NET标准(英语:.NET Standard),原称为**.NET平台标准**(英语:.NET Platform Standard)是微软为跨平台所规划的.NET Framework相关平台于系统之间的相依性标准,在此标准之下,能确保标准的应用程序接口与对象能够跨平台使用。.NET平台标准是以引用组件的方式存在,其本身并没有任何实现,真正的实现是由平台拥有者所进行,而客户端使用简单的NuGet版本戳记即可获得正确的平台版本。
历史.NET Framework长期以来一直是微软视窗平台上的特色与标准,它也成功的实现跨微软视窗平台的应用程序接口,但最为人诟病的一点是它无法跨出微软视窗平台,虽然有Mono这样的Framework可跨平台,但是Mono毕竟不是官方实现,在.NET兼容性上也无法达到百分之百兼容,而在微软以.NET Core与ASP.NET Core投入真正跨平台的架构与框架开发时,势必要面临这个问题。
.NET平台标准的基础是.NET Framework上的便携式类库,但为它赋与了更标准的作法以及更容易识别的版本戳记。
.NET平台标准的原理如下所示:
平台拥有者自详细的.NET平台标准版本中实现引用组件。
平台拥有者可能会自详细的.NET平台标准版本实现引用组件的子集。
任何.NET平台标准引用组件中的API表层变更都会影响版本。
低版本的组件总是会兼容于高版本。1
运作方式.NET平台标准由微软提供引用组件,目前的引用组件置于微软的CoreFX存储库,每一个定义的名字空间与类别都有一个ref文件夹,里面即是默认的实现码,所有参与.NET平台标准的实现者都必须要实现这些属性与方法,才能兼容于.NET平台标准,而CoreFX也有提供实现码,供实现的引用之用,在大多数的情况,各平台的差异性并不高。1
当库已实现成.NET平台标准兼容的库后,客户端就可以使用目标平台别称(Target Platform Moniker,TPM)来加入其引用,其命名规则是portable-a+b+c+d+...,portable表示它是便携式的类库,a, b, c, d则是要支持的平台别:
|| ||
版本.NET平台标准使用netstandard来代表一个平台的标准,客户端直接使用netstandard来获取平台的功能,目前各平台对应的.NET平台标准有:
|| ||
.NET平台标准的版本戳记为netstandardx.y,其中x表示主版号y表示副版号,例如netstandard10 = .NET Standard 1.0、netstandard1.5 = .NET Standard 1.5。2
对应于便携式的版本.NET平台标准对应到之前的便携式类库的版本戳记,若客户端需要特别针对特定的平台版本进行对应时,可以使用import的功能导入(这是供.NET Core应用程序的功能)。
|| ||
针对Mono以及Xamarin等平台,平台标准的起始为1.4(版本戳记为netstandard1.4)。2
支持工具目前可使用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 Studio3
本词条内容贡献者为:
王慧维 - 副研究员 - 西南大学