.NET Standard 和 .NET Core 3.x 或 ASP.NET Core 3.x

.NET Standard and .NET Core 3.x or ASP.NET Core 3.x

我对 .NET Standard 以及最近发布的 .NET Core 3.0 和 ASP.NET Core 3.1

有几个问题

.NET Standard 的先前版本与正在发布的 .NET Core 具有相同的主要版本,但对于 .NET Core 3.1,兼容的是 .NET Standard 2.1。

  1. .NET Standard 是否正在逐渐过时,或者这只是一个与 .NET Core 版本无关的版本号?
  2. 我们可以假设 .NET Standard 2.1 也与 ASP.NET Core 3.1 兼容吗?
  3. 如果我们将现有的网络应用程序和 MVC 网络 API 迁移到 asp.net 核心 3.1,那么网络应用程序使用的现有 .net 标准 class 库会怎样?

我们是否更改旧 .NET 标准 class 库的目标框架:

<TargetFramework>netstandard2.0</TargetFramework>

<TargetFramework>netstandard2.1</TargetFramework>

或更改为

<TargetFramework>netcoreapp3.0</TargetFramework> 

并添加一个 FrameworkReference 到 Microsoft.AspNetCore.App

  1. .NET Standard 的版本号与.NET Core 不同步,之前的任何匹配都是巧合。 .NET Standard 的发布节奏较慢,但与 .NET Core 相比包含更多 APIs,因此从这个意义上讲它不会过时。

旁白 - 当 .NET 5 出现并统一平台时,.NET Standard 的相关性将降低,现在多目标工作得很好,它在来年仍然相关,并且与处理 API 旧框架的表面。

  1. ASP.NET Core 3.0 与 .NET Standard 2.1 兼容,因此 ASP.NET Core 3.1 也将兼容。 (你使用的阶段表明你有倒退的关系)

  2. 您可以继续从支持它和更高版本的框架中引用 .NET Standard 2.0 库,因此您仍然可以在 ASP.NET Core 3.1 可用时使用它。

最后一个问题,视情况而定:)

如果您处理的是非 Web 库,那么 netstandard2.1 将是合适的(虽然不是强制性的,您可以将其保留为 2.0)。

如果您有一个 ASP.NET 核心项目或相关的网络库项目,那么您可能想转到 netcoreapp3.0

为了澄清我的最后一点,你找不到比 Andrew Lock 在这里更好的解释了:https://andrewlock.net/converting-a-netstandard-2-library-to-netcore-3/

官方升级指导can be found here