[英]Detected package downgrade: Microsoft.EntityFrameworkCore.SqlServer from 2.2.6 to 2.2.4
我有一个ASP.NET Core Web API应用程序,被指示要更新NuGet程序包,一旦我开始升级,NuGet开始一个接一个地抛出错误(关于依赖项的错误)(一个依赖于另一个未安装的组件,另一个依赖于另一个)取决于另外两个未安装的,所以去了); 我在卡住时遇到以下错误:
检测到的包降级:Microsoft.EntityFrameworkCore.SqlServer从2.2.6降到2.2.4。 直接从项目中引用包以选择其他版本。
在该错误下,我看到“安装对Microsoft.EntityFrameworkCore.Abstractions 2.2.6的引用以解决此问题”
但是当我尝试这样做时,它会抛出:
“检测到版本冲突,请安装对Microsoft.EntityFrameworkCore 2.2.6的引用以解决此问题”
当然,这是一个循环错误,没有给我任何选择,我尝试安装2.2.4版并引发了相同的冲突错误(但与2.2.3版有关,依此类推)。
这是Visual Studio Enterprise 2017,ASP.NET Core 2.1
我已经尝试过将true添加到.cproj文件,但根本没有用
我想你在这里掉了一个兔子洞。 通常,该例外仅表示您的项目正在为同一个程序包获取两个引用,而这些引用之一是针对较低版本的引用。 发生这种情况可能有多种原因,但通常归结为两种可能性(或两种可能性的结合):
您有引用相同包的不同元包,并且元包版本不匹配。
您具有一个或多个项目依赖项,并且那些依赖项目使用同一软件包/元软件包的不同版本。
关于“安装对Microsoft.EntityFrameworkCore.Abstractions的引用”的内容通常是红色鲱鱼。 它指出特定的软件包参考版本不匹配,但这并不意味着从字面上安装该软件包是最佳方法。
最大的事情将是元软件包,因为它们基本上只是将多个软件包合并到一个引用中。 实际的基础软件包及其版本没有直接引用,但它们在那里,就像您直接添加了引用一样。 因此,并不总是很清楚两个独立的元软件包实际上是在后台使用一个或多个相同的软件包。
此时最好的方法是回滚软件包参考更改。 您可能引入了比解决的问题更多的问题。 删除任何多余或多余的引用。 例如,如果您同时引用了Microsoft.EntityFrameworkCore
和Microsoft.EntityFrameworkCore.Abstractions
,请删除Abtractions
。 直接编辑.csproj文件是最简单的方法。 在您的解决方案中逐个项目进行下去,然后将软件包缩减为仅对项目绝对必要的软件包。 提示:如果您开始在代码中看到红色弯曲,则实际上需要该红色弯曲。
完成此操作后,请一次升级整个解决方案的所有NuGet软件包。 从字面上看,右键单击解决方案,然后选择“管理解决方案的NuGet软件包”。 您还应该检查“合并”选项卡,并确保其中没有任何内容,即在所有项目中都运行相同版本的所有内容。 然后,您应该很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.