Visual studio 2017 检测到包降级:Microsoft.EntityFrameworkCore.SqlServer从2.2.6降级到2.2.4

Visual studio 2017 检测到包降级:Microsoft.EntityFrameworkCore.SqlServer从2.2.6降级到2.2.4,visual-studio-2017,nuget-package,asp.net-core-2.1,Visual Studio 2017,Nuget Package,Asp.net Core 2.1,我有一个ASP.NET核心Web API应用程序,有人指示我更新NuGet软件包,一旦我开始升级,NuGet就开始一个接一个地抛出缺少依赖项的错误(一个依赖于未安装的另一个,另一个依赖于未安装的另2个,依此类推);我遇到了以下错误,我被卡住了: 检测到包降级:Microsoft.EntityFrameworkCore.SqlServer从2.2.6降级到2.2.4。直接从项目中引用包以选择其他版本 在该错误下方,我看到“安装对Microsoft.EntityFrameworkCore.Abstr

我有一个ASP.NET核心Web API应用程序,有人指示我更新NuGet软件包,一旦我开始升级,NuGet就开始一个接一个地抛出缺少依赖项的错误(一个依赖于未安装的另一个,另一个依赖于未安装的另2个,依此类推);我遇到了以下错误,我被卡住了:

检测到包降级:Microsoft.EntityFrameworkCore.SqlServer从2.2.6降级到2.2.4。直接从项目中引用包以选择其他版本

在该错误下方,我看到“安装对Microsoft.EntityFrameworkCore.Abstractations 2.2.6的引用以解决该问题”

但当我尝试这样做时,它抛出:

检测到版本冲突,请安装对Microsoft.EntityFrameworkCore 2.2.6的引用以解决此问题

当然这是一个循环错误,因为没有给我选项,我尝试安装版本2.2.4并抛出了相同的冲突错误(但与版本2.2.3等相关)

这是Visual Studio Enterprise 2017,ASP.NET核心2.1

我已经尝试过添加true
到.cproj文件,但根本不起作用

我认为您在这里遇到了麻烦。通常情况下,例外情况只意味着您的项目将获得同一个包的两个引用,其中一个引用的版本较低。这种情况的发生可能有多种原因,但通常归结为两种可能性(或两者的结合):

  • 您有不同的元包引用同一个包,并且元包版本不匹配

  • 您有一个或多个项目依赖项,这些依赖项项目使用相同包/元包的不同版本

  • 关于“安装对Microsoft.EntityFrameworkCore.Abstracts的引用”的内容通常都是骗人的。它指出了特定的包参考版本不匹配,但这并不意味着真正安装该包是最好的方法

    最重要的是元包,因为它们基本上只是一个引用中的多个包。实际的底层包及其版本没有直接引用,但它们就在那里,就像您直接添加了引用一样。因此,并不总是清楚两个单独的元包是否在引擎盖下实际使用一个或多个相同的包

    此时最好的方法是回滚包引用更改。你引入的问题可能比你解决的问题还多。删除任何无关或多余的引用。例如,如果您同时引用了
    Microsoft.EntityFrameworkCore
    Microsoft.EntityFrameworkCore.Abstractions
    ,请删除
    Abtractions
    。直接编辑.csproj文件最容易做到这一点。在您的解决方案中逐个项目,并将包缩减为您的项目绝对需要的包。提示:如果您开始在代码中看到红色的曲线,您实际上需要它


    完成此操作后,立即升级整个解决方案的所有NuGet软件包。实际上,右键单击解决方案并选择“管理解决方案的NuGet软件包”。您还应该检查“合并”选项卡,并确保没有任何内容,即您在所有项目中运行相同版本的所有内容。然后,您就可以开始了。

    谢谢Chris,我终于找到了问题所在,应用程序是为ASP.NET Core 2.1构建的,我安装的组件是为ASP.NET Core 2.2设计的(至少),我认为这是Nuget软件包管理器的问题,因为问题是在我运行update packages命令后开始的,应用程序停止编译,我的最佳猜测(因为我被指示更新包)是逐个解决问题,直到我陷入这个兔子洞。我更新到了.NETCore2.2并运行了更新包,它成功了。