.NET标准已版本化。每个新版本都添加了更多的api。当库是针对某个.NET标准版本构建的时,它可以在实现该版本的.NET标准(或更高版本)的任何.NET实现上运行。针对更高版本的.NET标准允许库使用更多的API,但这意味着它只能用于较新版本的.NET。针对较低版本会减少可用的api,但意味着库可以在更多地方运行。下列截图中展示了.NET Standard 各版本对不同.NET 实现的支持情况。
其他低版本的支持情况,请参考微软官方文档:https://dotnet.microsoft.com/platform/dotnet-standard#versions
从上图中可以看出
- .NET Standard 版本越高,提供的API越多、功能越强大。
- .NET Standard 2.0 对.NET Frmework 支持的最低版本为 4.6.1。
- .NET Standard 2.1 不再支持.NET Framework。
要定位哪个 .NET Standard 版本
选择 .NET Standard 版本时,应权衡以下因素:
- 版本越高,可使用的 API 就越多。
- 版本越低,可实现它的平台就越多。
一般来说,建议尽可能定位最低版本 .NET Standard。 因此,在找到可以定位的最高版本 .NET Standard 后,请按照以下步骤操作:
- 定位前一更低版本的 .NET Standard,然后生成项目。
- 如果成功生成项目,请重复执行第 1 步。 否则,重新定位到后一较高版本,这就是应该使用的版本。
但是,定位更低版本的 .NET Standard 会引入许多支持依赖项。 如果项目定位 .NET Standard 1.x,我们建议 还定位 .NET Standard 2.0。 这简化了在 .NET Standard 2.0 兼容框架上运行的库的用户的依赖项关系图,并减少了下载所需的包数。
个人建议:为了同时支持.NET Core 与 .NET Framework,且尽可能多地使用API,建议选择.NET Standard 2.0。 如果不需要兼容.NET Framework,建议直接使用 .NET5版本。
参考微软官方文档:https://dotnet.microsoft.com/platform/dotnet-standard#versions