在 Visual Studio 中,您至少可以创建三种不同类型的类库:

  • 类库(.NET Framework)
  • 类库(.NET 标准)
  • 类库(.NET Core)

虽然第一个是我们多年来一直使用的,但我一直感到困惑的一个主要问题是何时使用 .NET Standard 和 .NET Core 类库类型。多目标不同框架版本, 和创建单元测试项目

那么,有什么区别类库(.NET 标准)类库(.NET Core),为什么两者都存在,什么时候我们应该使用其中一个而不是另一个?

答案

我们什么时候应该使用其中一种而不是另一种?

该决定是兼容性和 API 访问之间的权衡。

当您想要增加与您的库兼容的应用程序数量,并且您可以接受减少您的库可以访问的 .NET API 表面积时,请使用 .NET Standard 库。

当您想要增加库可以访问的 .NET API 表面积,并且您可以只允许 .NET Core 应用程序与您的库兼容时,请使用 .NET Core 库。

例如,面向 .NET Standard 1.3 的库将兼容面向 .NET Framework 4.6、.NET Core 1.0、通用 Windows 平台 10.0 以及支持 .NET Standard 1.3 的任何其他平台的应用程序。Microsoft.NETCore.CoreCLR包与 .NET Core 兼容,但不与 .NET Standard 兼容。

类库(.NET Standard)和类库(.NET Core)有什么区别?

兼容性:面向 .NET Standard 的库将在任何符合 .NET Standard 的运行时上运行,例如 .NET Core、.NET Framework、单核细胞增多症/Xamarin

API 表面积:.NET 标准库包含所有内容NETStandard.Library,而 .NET Core 库附带了所有内容Microsoft.NETCore.AppSystem.Threading.Thread),其中一些与 .NET 标准不兼容(例如Microsoft.NETCore.CoreCLR)。

此外,.NET Core 库指定运行时并附带应用程序模型。

为什么两者都存在?

暂时忽略库,.NET Standard 存在的原因是为了可移植性;

回到库,.NET Standard 库模板可以在多个运行时上运行(以牺牲 API 表面积为代价)。

这是一个交互矩阵显示哪个 .NET 标准支持哪些 .NET 实现以及有多少 API 可用。

来自: stackoverflow.com