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

时间:2014-01-07 17:56:14

标签: nuget asp.net-mvc-5 antlr3

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

  

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

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

5 个答案:

答案 0 :(得分:30)

以下是我设法解决的问题:

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

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

PM> update-package Antlr

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

答案 1 :(得分:2)

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

在我们的示例中,我们引用的是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>

我通过删除绑定重定向来修复它,因为这不是必需的。您还可以通过将绑定重定向的版本更改为与您引用的Nuget包相同的版本来解决此问题。

答案 2 :(得分:1)

我的MVC 5应用程序出现了同样的错误。尝试了一切,

  • 安装并重新安装Antlr软件包
  • 删除%TEMP%数据。

Fianlly我能够通过简单地从项目的bin文件夹中删除所有dll并再次构建项目来解决问题。 虽然我仍然不确定这个参考错误的真正原因。

答案 3 :(得分:1)

我尝试了上面的解决方案来更新特定的包,但是没有成功,但更新所有包确实有效。使用包管理器控制台;

update-package -Reinstall

随后重建解决方案。

答案 4 :(得分:0)

Update-Package -Reinstall Antlr

为我工作...

此外,在发布时,请确保选中"Delete Existing Files"复选框。