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

15

当我进入 工具 | 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'.

我看到.NET Core 3.1和.NET 5.0之间存在不兼容问题,但我不知道原因。

NuGet包管理器为什么要尝试向.NET Core 3.1应用程序添加.NET 5.0更新?

5个回答

11
NuGet Package Manager为什么要向.NET Core 3.1应用程序添加.NET 5.0更新?
.NET 5.0是在3.1之后的.NET Core的下一个主要版本。在.NET 5.0发布后,我们可以通过Nuget Package Manager安装.NET 5.0版本的包,或将现有的ASP.NET Core 3.1项目(及其包)更新到ASP.NET 5.0。因此,当我们打开.Net Core 3.1应用程序的Nuget Package Manager时,我们会看到这些最新版本的更新。

enter image description here

然后,如果我们点击更新按钮来更新这些包,它将显示不兼容的错误。因为目前我们的应用程序仍针对Asp.net Core 3.1版本,而不是.NET 5.0。
要解决此问题,您可以忽略这些更新,并继续使用Asp.net Core 3.1应用程序的3.*版本包。
否则,您可以将ASP.NET Core 3.1项目升级到ASP.NET Core 5.0(在升级之前,请确保已安装.NET 5.0并将Visual Studio版本升级到最新版本)。
右键单击项目,然后单击属性选项,将目标框架从.NET Core 3.1更改为.NET 5.0。保存更改,然后在NuGet中单击更新按钮以更新包。

enter image description here

【注】当更新软件包时,请尝试逐个更新它们(而不是选择所有软件包并单击“更新”按钮),因为它们可能包含依赖项。

7
我当然明白.NET 5是新版本,但我的应用程序使用的是.NET Core 3.1。为什么在一个不兼容的.NET Core应用程序中安装.NET 5库呢?请解释一下。 - Jonathan Wood
当我在电脑前时,我会更详细地查看您的其他评论。 - Jonathan Wood
为什么在不兼容的情况下,.NET 5库会被安装到.NET Core应用程序中?对于.NET Core 3.1应用程序,在NuGet包管理器中,它只显示有一些包需要更新,但不会自动将这些包更新到最新版本(.NET 5版本)。如果您尝试点击更新按钮将这些包更新到.NET 5版本,由于它们不兼容,将会显示不兼容错误并阻止更新。更新与否取决于您的选择。 - Zhi Lv
1
看一下错误信息。它确实尝试安装 .NET 5 包,但由于它们不兼容,我收到了错误提示。我只是在顶部勾选了复选框以选择所有内容,然后点击了更新。它实际上在出现错误之前尝试安装它们。为什么我会收到与我的应用程序不兼容的版本的更新提醒? - Jonathan Wood
2
正确。我实际上是在 GitHub 上的 asp.net core 存储库中发布的。它被认为是一个将要解决的问题。https://github.com/dotnet/aspnetcore/issues/28098 - Jonathan Wood
显示剩余2条评论

3

在我的情况下,降级到之前的版本没有起作用。 nuget restore 是在 Azure DevOps 上运行的版本 4.1。将 nuget 升级到版本 5.8.1 就解决了问题。


2

如果您使用Visual Studio 2019作为编辑器,请转到项目设置。

应用程序 ----> 目标框架 -----> .NET 5.0

问题将会得到解决。


1
这不是问题的答案。 - R. Schreurs

1

我遇到了同样的问题。在我的情况下,将 Visual Studio 更新到最新版本,然后将项目目标框架升级到.NET 5.0 就解决了问题。


0
尝试安装Install-Package Microsoft.Extensions.Primitives -Version 5.0.0,然后您就可以安装EF5了。

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