程序集使用版本 X,其版本高于引用的程序集错误

Posted

技术标签:

【中文标题】程序集使用版本 X,其版本高于引用的程序集错误【英文标题】:Assembly uses version X which has a higher version than referenced assembly error 【发布时间】:2018-09-30 11:32:43 【问题描述】:

从 ASP.NET Core 2.0 升级到 2.1-preview2 后,出现以下错误:

Error   CS1705  Assembly 'System.Data.SqlClient' with identity 'System.Data.SqlClient, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' uses 'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version than referenced assembly 'System.Runtime' with identity 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

当我四处寻找类似的错误时,我看到很多关于 csproj 或 json 文件中引用的版本的讨论(取决于讨论的时间)。但是在 .NET Core 中只有一个对 Microsoft.AspNetCore.App 的引用。所以,我没有任何方法可以操作对System.Data.SqlClientSystem.Runtime 的引用

另一个观察结果是,虽然大多数错误是指像 connection.Open() 这样的真实代码,但有两个引用是对不存在的文件 CSC 行 1。

更新:如果我创建一个新项目并将有问题的代码复制到那里,我不会收到任何错误。所以,显然对不匹配版本的引用在项目中的某个地方......但我不知道在哪里!

【问题讨论】:

看起来System.Data.SqlClient 程序集依赖于程序集System.Runtime, Version=4.2.1.0。您的项目正在使用程序集System.Runtime, Version=4.2.0.0 好的。和?我可以修吗?我没有明确包括任何一个。只是"Microsoft.AspNetCore.App" Version="2.1.0-preview2-final" 查看项目的目标 .NET Framework。这就是新项目开箱即用的原因。 它是适用于所有人的 2.1 【参考方案1】:

有同样的问题。通过在 .csproj 文件中定位 RuntimeFrameworkVersion 标记并将其值更改为 2.1 来解决。

【讨论】:

我也有同样的问题,但原因不同。我错误地将针对 dotnet core 2.1 的库“Z”包含在针对 dotnet 标准 2.0 的库“Y”中,该库包含在针对 dotnet core 2.1 的最终应用程序“X”中。编译器真的不喜欢这样,但错误消息很神秘,(与原始问题相同)。将链 ZYX 中的“中间”库重构为 dotnet core 2.1 修复了它。我意识到这听起来很明显,但我得到了 Z 和 Y,它们都是自己工作的。您的问题只有一个库,我将其发布给可能有此问题的其他人 对于核心 2.2.1 将其更改为 2.2【参考方案2】:

使用 Visual Studio,最简单的方法是:

1.- 右键单击​​解决方案并转到“Manager Nugget Packages for solution...”

2.- 转到“合并选项卡”(右侧最后一个) 您将在每个项目中看到不同版本的程序集。

尝试统一解决方案中所有项目引用的版本。 (卸载和安装相同的版本)。

祝你好运!!

【讨论】:

谢谢,大卫。这是一个单一项目的解决方案;所以你的建议不适用。无论如何,这个问题已经存在 3.5 年了,我们通过创建一个新项目并只是移动我在更新中指出的代码来解决它。可能是微软测试版中的一个错误 实际上,它发生在我早上,这就是为什么我发布了帮助我解决问题的解决方案。 ;)

以上是关于程序集使用版本 X,其版本高于引用的程序集错误的主要内容,如果未能解决你的问题,请参考以下文章

调用百度开发者API,程序集AipSdk所使用的Newtonsoft.Json,版本高于所引用的程序集Newtonsoft.Json

.Net 选择错误引用的程序集版本

c#引用其它程序的程序集时报错

如何引用多版本程序集

在部署到IIS应用程序时升级FSharp.Core版本,程序集引用错误

在OS X上检查程序集(dll)的版本