【问题标题】:Assembly's manifest definition does not match assembly reference程序集的清单定义与程序集引用不匹配
【发布时间】:2022-01-07 09:25:35
【问题描述】:

我更新了我的 MVC 项目的所有包,但出现以下错误:

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

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

【问题讨论】:

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


    【解决方案1】:

    这是我设法解决的方法:

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

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

    PM> update-package Antlr
    

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

    【讨论】:

    • 另外:如果上述方法不起作用,请尝试Update-Package -Reinstall Antlr
    【解决方案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 包相同的版本来修复它。

    【讨论】:

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

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

    update-package -Reinstall
    

    随后重建解决方案。

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:
        Update-Package -Reinstall Antlr
        

        为我工作...

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-06-10
          • 2018-10-13
          • 1970-01-01
          • 2011-08-20
          • 2016-09-21
          相关资源
          最近更新 更多