【问题标题】:.NET: dependentAssembly, bindingRedirect has wrong version.NET:dependentAssembly,bindingRedirect 版本错误
【发布时间】:2013-09-13 00:57:36
【问题描述】:

我试图了解,当我通过 nuget 添加 moq 时,它创建了一个包含以下信息的 app.config。

  <dependentAssembly>
    <assemblyIdentity name="Moq" publicKeyToken="69f491c39445e920" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.1309.801" newVersion="4.1.1309.801" />
  </dependentAssembly>

问题是现在我遇到了这样的错误

无法加载文件或程序集 'Moq,版本 = 4.1.1309.801, Culture=neutral, PublicKeyToken=69f491c39445e920' 或其其中之一 依赖关系。定位程序集的清单定义不 匹配程序集引用。 (HRESULT 异常:0x80131040)

原因基本上是我的起订量参考其实有这个版本

        4.1.1309.919

所以我很困惑,有没有办法解决这个问题?当然,一种快速而肮脏的方法是手动编辑 app.config 文件并放置正确的版本,即 .919,但我有很多。

我也不知道为什么当我的起订量参考明显是时,我的 app.config 没有被 nuget 更新。

我认为属性 newVersion 中不支持通配符之类的东西???

我知道如果我删除该文件会导致其他问题,因为我依赖于 moq 3.0,因此拥有此文件意味着它仍然支持依赖引用并将其重定向到 4.1。

这是我的理解,但我不是 100% 确定,有人帮忙吗?

【问题讨论】:

    标签: c# .net moq


    【解决方案1】:

    我认为您对问题原因的假设可能是错误的。绑定重定向不应影响引用 4.1.1309.919 的项目。这很可能来自引用 3.0 的项目。看来您实际上安装了 4.1.1309.919,您引用的内容介于 0.0.0.0-4.1.1309.801 之间,并且由于绑定重定向不正确,它失败了。

    您能否确定哪个测试项目因异常而失败并发布 proj 文件的参考部分?

    【讨论】:

    • 是的,很奇怪,这可能是这种情况,所以在创建新项目时,无论如何我可以确保在新项目中使用与旧项目相同的版本来处理 nuget 包。我认为这是导致我出现问题的原因...创建了一个新项目然后添加了我的 nuget pacakges - 但我认为有一个更新的版本!
    • 我不确定。我没有使用足够的 NuGet 来确定。我认为,如果您选择“管理解决方案的 NuGet 包”而不是添加新的,它将重用现有的而不是下载新的。此时,您可能会卡在扫描您的配置和项目文件以查看哪些引用了哪些版本以及哪些正在应用重定向。最好杀死所有旧引用、重定向,并针对新版本重新编译所有测试。
    • 感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2017-08-26
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多