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

Ame*_*eya 8 c# asp.net-core-mvc asp.net-core asp.net-core-3.0 .net-standard-2.1

我对 .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. 如果我们将现有的 web 应用程序和 MVC web API 迁移到 asp.net core 3.1 那么 web 应用程序使用的现有 .net 标准类库会发生什么?

我们是否将旧的 .NET Standard 类库的目标框架从:

<TargetFramework>netstandard2.0</TargetFramework>
Run Code Online (Sandbox Code Playgroud)

<TargetFramework>netstandard2.1</TargetFramework>
Run Code Online (Sandbox Code Playgroud)

或更改为

<TargetFramework>netcoreapp3.0</TargetFramework> 
Run Code Online (Sandbox Code Playgroud)

并向 M​​icrosoft.AspNetCore.App 添加 FrameworkReference

Stu*_*art 10

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

抛开 - 当 .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 中使用它。

对于您的最后一个问题,这取决于:)

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

如果您有一个 ASP.NET Core 项目或相关的 Web 库项目,那么您可能希望迁移到netcoreapp3.0.

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

可以在此处找到有关升级的官方指南