.NET:dependentAssembly,bindingRedirect的版本错误

时间:2013-09-12 15:22:05

标签: c# .net moq

我试图了解当我通过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,Version = 4.1.1309.801,   Culture = neutral,PublicKeyToken = 69f491c39445e920'或其中一个   依赖。定位程序集的清单定义没有   匹配程序集引用。 (HRESULT异常:0x80131040)

原因基本上是我的moq引用实际上有这个版本

        4.1.1309.919

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

另外我不知道为什么我的app.config没有被nuget更新,当我的moq参考显然是。

我不认为属性newVersion ???

支持类似通配符的东西

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

这是我的理解,但我不是百分百肯定,有人帮忙吗?

1 个答案:

答案 0 :(得分:2)

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

您能否确定哪个测试项目出现异常并发布了proj文件的引用部分?