.NET标准和.NET Core 3.x或ASP.NET Core 3.x

9

我对.NET Standard和最近宣布的.NET Core 3.0和ASP.NET Core 3.1有几个问题。

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

enter image description here

  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标准类库的目标框架:

<TargetFramework>netstandard2.0</TargetFramework>

<TargetFramework>netstandard2.1</TargetFramework>

或更改为

<TargetFramework>netcoreapp3.0</TargetFramework> 

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

1个回答

11
  1. .NET Standard的版本号与.NET Core不同步,之前的匹配是巧合。.NET Standard发布速度较慢,但每次移动时包含更多API,因此在这个意义上它不会过时。

另外-.NET Standard在未来变得不那么重要,当.NET 5推出并统一平台时,现在多目标定位工作非常好,它仍然保持相关性,并且对于处理旧框架的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 Core项目或相关的Web库项目,则可能需要切换到netcoreapp3.0。

针对我上一个观点的澄清,你可以在Andrew Lock的这里找到最好的解释:https://andrewlock.net/converting-a-netstandard-2-library-to-netcore-3/

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


值得注意的是,你选择使用.NET Standard 2.0还是.NET Core 3.0取决于你是否需要在.NET Core 3.0中引入的API,例如Span<T>等。如果你不需要利用这些功能,那么针对更广泛的兼容性,最好将目标设置为.NET Standard 2.0。针对.NET Standard 2.1其实没有什么意义,因为除了.NET Core 3+之外,没有其他支持它的,而且可能永远也不会有。 - Chris Pratt
1
我同意你的第一部分。只有.NET Framework不再支持,而mono和Xamarin仍然适用于2.1版本。 - Stuart
@Stuart - 哇,我不知道(放弃了.NET Framework支持)。所以我看了一下https://dotnet.microsoft.com/platform/dotnet-standard,我明白你的意思了:当选择“.NET Standard 2.0”时,它显示“.NET Framework 4.6.1”及更高版本支持它。将下拉菜单更改为“.NET Standard 2.1”,就没有任何.NET Framework支持它! - ToolmakerSteve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接