.NET Core 库比 .NET Standard 库有什么优势吗?

Is there any advantage to a .NET Core library over .NET Standard library?

我正在将我的应用程序从 VS2015 移植到 VS2017,并试图找出正确的迁移路径。我还将我的 Web 服务移动到 .NET Core 以利用部署到 Linux 或 Windows 服务器的优势。我发现我可以选择在 .NET Standard 或 .NET Core 中创建基础库。 .NET Core 库有什么优势,还是我应该默认在 .NET Standard 中创建基础库?

.Net Standard is just package with interfaces with can be used to provide compatibility across .Net Framework, .Net Core and others

我不会选择 .NET Core 库。不同之处在于引用的库:

  • .NET Standard 库引用 netstandardX.X NuGet 元包
  • .NET Core 库引用 netcoreappX.X NuGet 元包

netcoreapp 包还包括一些 .NET Standard 包,还有一堆 .NET Core App 特定包(包括 libuv。不知道为什么库需要 libuv。)

因此 .NET Standard 库适用于跨平台,而 .NET Core 库仅适用于 .NET Core

实际上,.NET Standard 2.0 是 .NET Framework 4.6.2(-ish) 和 .NET Core 2.0 的交集。

如果您构建一个面向 .NET Standard 2.0 的库,那么您的库可以被 .NET Framework 库和应用程序以及 .NET Core 库和应用程序使用。这就是标准的优势。

但是有几个 types/members 已添加到 .NET Core,但 不是 .NET Standard 的一部分。如果您想使用新的 CertificateRequest class 之类的东西,您需要明确定位 .NET Core。

.NET Core 允许新事物比 .NET Framework 更快地到达用户手中,因此一般权衡总是“.NET Standard => 更多地方;.NET Core => 更新事物”。