Nuget 组装';的清单定义与程序集引用不匹配

Nuget 组装';的清单定义与程序集引用不匹配,nuget,asp.net-mvc-5,antlr3,Nuget,Asp.net Mvc 5,Antlr3,我更新了我的MVC项目的所有软件包,发现以下错误: 无法加载文件或程序集“Antlr3.Runtime,版本=3.5.0.2, 区域性=中性,PublicKeyToken=eb42632606e9261f'或其 依赖关系。定位程序集的清单定义不正确 匹配程序集引用。(来自HRESULT的异常:0x8013100) 在打开razor(.cshtml)文件的情况下构建项目会给我带来更多错误以下是我解决问题的方法: 转到解决方案资源管理器,并在“引用”下选择Antlr,右键单击并说出属性。确保文件版本

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

无法加载文件或程序集“Antlr3.Runtime,版本=3.5.0.2, 区域性=中性,PublicKeyToken=eb42632606e9261f'或其 依赖关系。定位程序集的清单定义不正确 匹配程序集引用。(来自HRESULT的异常:0x8013100)


在打开razor(.cshtml)文件的情况下构建项目会给我带来更多错误

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

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

我只需转到package manager控制台并键入:

PM> update-package Antlr

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

我的MVC 5应用程序也有同样的错误。从

  • 安装和重新安装Antlr包
  • 正在删除%TEMP%数据
最后,我可以通过简单地从我的项目的bin文件夹中删除所有DLL并重新构建项目来解决这个问题。
虽然我仍然不确定这个参考错误的真正原因。

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

update-package -Reinstall
然后是解决方案的重建

Update-Package -Reinstall Antlr
为我工作


此外,在发布时,请确保选中了“删除现有文件”复选框。

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

在我们的例子中,我们引用了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软件包相同的版本来修复它。

另外:尝试
更新软件包-重新安装Antlr
,以防上述操作无效,因为这为我指明了正确的方向。这很疯狂,但我们使用的是Newtonsoft.Json 10.0.2.0(不,我们现在无法升级),但在重定向中,我们必须指定newVersion=“10.0.0.0”,因为10.0.2.0内部报告为10.0.0.0。