程序集的清单定义与程序集引用不匹配

gld*_*ael 13 antlr3 nuget asp.net-mvc-5

我更新了我的MVC项目的所有包,我收到以下错误:

无法加载文件或程序集'Antlr3.Runtime,Version = 3.5.0.2,Culture = neutral,PublicKeyToken = eb42632606e9261f'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

使用剃刀(.cshtml)文件打开项目会给我带来更多错误

gld*_*ael 33

以下是我设法解决的方法:

转到解决方案资源管理器并Antlr在"引用"下选择,右键单击并说出属性.确保文件版本与编译器正在查找的版本相同.就我而言,MSBuild需要5.5.0.2版本,但参考属性显示的是早期的2.x版本.

我所要做的就是转到包管理器控制台并输入:

PM> update-package Antlr
Run Code Online (Sandbox Code Playgroud)

然后再次构建项目,如果你得到更多程序集的相同错误,也要更新它们.您的问题将得到解决

  • 另外:尝试`Update-Package -Reinstall Antlr`以防上述情况不起作用 (4认同)

Rei*_*ica 9

如果您的配置文件中有一个流氓绑定重定向,则可能会发生这种情况,该重定向指向您没有的版本。

在我们的例子中,我们引用了 PostSharp 5.0.50 Nuget 包,并且我们的配置文件中存在以下内容,这导致它改为查找 PostSharp 5.0.51 版。

<dependentAssembly>
  <assemblyIdentity name="PostSharp" publicKeyToken="b13fd38b8f9c99d7" culture="neutral"/>
  <bindingRedirect oldVersion="0.0.0.0-5.0.51.0" newVersion="5.0.51.0"/>
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

我通过删除绑定重定向来修复它,因为它没有必要。您还可以通过将绑定重定向的版本更改为与您引用的 Nuget 包相同的版本来修复它。

  • 赞成,因为这为我指明了正确的方向。这很疯狂,但我们使用的是 Newtonsoft.Json 10.0.2.0(不,我们现在无法升级)但在重定向中我们必须指定 newVersion="10.0.0.0" 因为内部 10.0.2.0 报告为 10.0.0.0。 (2认同)