ASP.NET Core从入门到精通
上QQ阅读APP看书,第一时间看更新

1.3 .NET Standard

在Visual Studio中新建项目时,除了.NET和.NET Framework选项,还有一个.NET Standard选项,如图1.4所示,那么什么是.NET Standard呢?它又有什么作用呢?本节将对.NET Standard进行介绍。

图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实现平台版本

说明

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或更高版本为目标。