NuGet 包管理器尝试将 .NET 5.0 更新添加到 .NET Core 3.1 应用程序

Jon*_*ood 9 visual-studio nuget asp.net-core asp.net-core-3.1 asp.net-core-5.0

当我进入工具| NuGet 包管理器| 管理解决方案的 NuGet 包,它显示我有 12 个可用更新。

但是当我尝试全部更新它们时,出现错误。

NU1202: Package Microsoft.VisualStudio.Web.CodeGeneration 5.0.0 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package Microsoft.VisualStudio.Web.CodeGeneration 5.0.0 supports: net5.0 (.NETCoreApp,Version=v5.0)
NU1202: Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore 5.0.0 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore 5.0.0 supports: net5.0 (.NETCoreApp,Version=v5.0)
NU1202: Package Microsoft.VisualStudio.Web.CodeGeneration.Utils 5.0.0 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package Microsoft.VisualStudio.Web.CodeGeneration.Utils 5.0.0 supports: net5.0 (.NETCoreApp,Version=v5.0)
NU1202: Package Microsoft.VisualStudio.Web.CodeGeneration.Contracts 5.0.0 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package Microsoft.VisualStudio.Web.CodeGeneration.Contracts 5.0.0 supports: net5.0 (.NETCoreApp,Version=v5.0)
NU1202: Package Microsoft.VisualStudio.Web.CodeGenerators.Mvc 5.0.0 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package Microsoft.VisualStudio.Web.CodeGenerators.Mvc 5.0.0 supports: net5.0 (.NETCoreApp,Version=v5.0)
Package restore failed. Rolling back package changes for 'SolutionName'.
Run Code Online (Sandbox Code Playgroud)

我可以看到 .NET Core 3.1 和 .NET 5.0 之间存在不兼容问题,但我不知道为什么。

为什么 NuGet 包管理器试图将 .NET 5.0 更新添加到 .NET Core 3.1 应用程序?

Zhi*_* Lv 9

为什么 NuGet 包管理器试图将 .NET 5.0 更新添加到 .NET Core 3.1 应用程序?

.NET 5.0 是 .NET Core 3.1 之后的下一个主要版本。.NET 5.0 发布后,我们可以通过 Nuget 包管理器安装 .NET 5.0 版本包,或者将现有的 ASP.NET Core 3.1 项目(和包)更新到 ASP.NET 5.0。因此,当我们打开 .Net Core 3.1 应用程序的 Nuget 包管理器时,我们将看到这些最新版本的更新:

在此处输入图片说明

然后,如果我们单击“更新”按钮来更新这些包,则会显示不兼容错误。因为,目前我们的应用程序仍然面向 Asp.net Core 3.1 版本,而不是 .NET 5.0。

要解决此问题,您可以忽略这些更新,并仍然使用 3.* 版本的 Asp.net Core 3.1 应用程序包。

否则,您可以将 ASP.NET Core 3.1 项目更新为 ASP.NET Core 5.0(更新前,请确保您已安装 .NET 5.0 并将 Visual Studio 版本升级到最新版本)。

右键单击 Project 并单击Properties选项,将 Target FrameWork 从.NET Core 3.1更改为.NET 5.0。保存更改,然后单击 NuGet 中的“更新”按钮以更新包。

在此处输入图片说明

[注意] 更新包时,请尽量一一更新(而不是选择所有包并点击更新按钮),因为它们可能包含依赖项。

  • 当然,我知道.NET 5是新版本,但我的应用程序设置为.NET Core 3.1。为什么 .NET 5 库在不兼容的情况下安装在 .NET Core 应用程序中? (5认同)
  • 正确的。我实际上发布在 GitHub 上的 asp.net core 存储库中。这被认为是一个需要解决的问题。https://github.com/dotnet/aspnetcore/issues/28098 (2认同)