我更新了MVC项目的所有软件包,结果出现以下错误:
无法加载文件或程序集'Antlr3.Runtime, Version=3.5.0.2, Culture=neutral, PublicKeyToken=eb42632606e9261f'或其依赖项之一。该程序集的清单定义与程序集引用不匹配。(HRESULT 异常: 0x80131040)
在打开一个Razor (.cshtml) 文件的情况下构建项目会出现更多错误。
我更新了MVC项目的所有软件包,结果出现以下错误:
无法加载文件或程序集'Antlr3.Runtime, Version=3.5.0.2, Culture=neutral, PublicKeyToken=eb42632606e9261f'或其依赖项之一。该程序集的清单定义与程序集引用不匹配。(HRESULT 异常: 0x80131040)
在打开一个Razor (.cshtml) 文件的情况下构建项目会出现更多错误。
以下是我解决问题的方法:
进入解决方案资源管理器,选择引用下的Antlr
,右键单击并选择属性。确保文件版本与编译器要求的版本相同。在我的情况下,MSBuild需要版本5.5.0.2,但引用属性显示为早期版本2.x。
我所需做的就是进入包管理器控制台,输入以下内容:
PM> update-package 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包的相同版本来解决它。
我尝试了上述解决方案来更新特定包,但没有成功,但更新所有包确实有效。使用 package manager console;
update-package -Reinstall
紧接着是解决方案的重建。
Update-Package -Reinstall Antlr
我已经尝试过...
另外,在发布时,请确保选中"删除现有文件"
复选框。
最终,我通过简单地从项目的bin文件夹中删除所有dll并重新构建项目来解决了问题。 虽然我仍然不确定这个引用错误的真正原因。