![ASP.NET Core从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/759/52841759/b_52841759.jpg)
1.3 .NET Standard
在Visual Studio中新建项目时,除了.NET和.NET Framework选项,还有一个.NET Standard选项,如图1.4所示,那么什么是.NET Standard呢?它又有什么作用呢?本节将对.NET Standard进行介绍。
![](https://epubservercos.yuewen.com/935CF8/31397116103568406/epubprivate/OEBPS/Images/Figure-P22_38491.jpg?sign=1738862804-4i5vJus4fwVcrr20TTWDR16bcFVCu9dZ-0-fe96c03b0fafb65e9e4aaaed0e952551)
图1.4 Visual Studio创建项目时的选项
1.3.1 什么是.NET Standard
通过前面的介绍,我们知道.NET中包含.NET Framework、.NET Core和Xamarin等,但是它们的基础实现并不是通用的,比如,.NET Framework中有访问Windows注册表的类,但.NET Core中并没有,遇到类似这样的情况时,如果我们想要开发一个供.NET Framework、.NET Core和Xamarin共同使用的代码库,实现起来会非常麻烦,因此,微软为了提高.NET生态系统的一致性,推出了.NET Standard。
.NET Standard是针对多个.NET实现推出的一套正式的.NET API规范,这里需要注意的是,.NET Standard只是一套规范,而不是一个框架,它本身只是规定了需要实现的规范,并不负责具体的实现。
1.3.2 .NET Standard的版本
.NET Standard随着.NET技术的升级而升级,不同版本的.NET Framework、.NET Core和Xamarin支持不同版本的.NET Standard,较高的版本会包含较低版本的所有API,但在.NET 5推出之后,.NET采用了不同的方法来建立一致性,这样在大多数情况下不再需要.NET Standard,但如果要在.NET Framework和其他任何.NET实现(如.NET Core、Xamarin)之间共享代码,则库必须面向.NET Standard 2.0。.NET Standard的最新版本为2.1,此后将不会再发布新版本,但.NET 5.0、.NET 6.0以及所有将来的版本将继续支持.NET Standard 2.1及更早版本。
关于每个.NET Standard版本支持的最低.NET实现平台版本如表1.3所示。
表1.3 每个.NET Standard版本支持的最低.NET实现平台版本
![](https://epubservercos.yuewen.com/935CF8/31397116103568406/epubprivate/OEBPS/Images/Figure-T23_72481.jpg?sign=1738862804-oZtxNggBiXWfWr1HubsfBFvhQ1nfj6wu-0-7fbac7f9e44cee1a8d4dbb099be23e49)
说明
Mono是一个诞生于开源社区的跨平台的.NET运行环境,它不仅可以运行于Windows系统上,还可以运行于Linux、FreeBSD、Unix、macOS X和Solaris等系统上。
1.3.3 如何选择.NET Standard版本
.NET Standard是一套规范,因此,只能创建.NET Standard类库项目,而不能创建.NET Standard控制台项目或者Web项目等,使用.NET Standard创建类库项目时,通常遵循以下原则:
使用.NET Standard 2.0在.NET Framework和.NET的所有其他实现之间共享代码;
使用.NET Standard 2.1在Mono、Xamarin和.NET Core 3.x之间共享代码;
如果需要使用库将应用程序分解为多个组件,建议以.NET 5.0或更高版本为目标。