2016-01-25 41 views
0

在Visual Studio(2013)中运行单元测试时出现以下错误。无法加载文件或程序集 - 反射坚持加载旧版本

System.IO.FileLoadException:无法加载文件或程序集Newtonsoft.Json,版本= 6.0.0.0,文化=中性公钥= 30ad4fe6b2a6aeed'或它的一个依赖。定位的程序集清单定义与程序集引用不匹配。 (异常来自HRESULT:0x80131040)

Newtonsoft.Json是我引用的DLL。但有趣的是,我在所有地方引用了Newtonsoft.Json 7.0。我很困惑为什么反思坚持加载旧版本6.0。

任何暗示我可以从哪里开始调查?

感谢,

+0

使用fuslogvw,看看它是寻找旧文件 – pm100

+0

检查,以确定您已经标有参考“复制本地=真正的”如果你直接引用的DLL 。 – Gwasshoppa

+0

谢谢@ pm100的建议。 fulslogvw确实有效,但花了很多时间才开始工作。所以需要第一时间耐心。它确实向我展示了旧版本的名称 - 我在库中构建了6.0版本,并在当前项目中构建了7.0版本。我有两个选择:1)使用Gwasshoppa建议的; 2)修改所有引用以使用相同的版本。 –

回答

0

我会检查你的web.config文件,看看是否有一些东西被引用旧版本。

您也可以尝试在web.config中添加此项以确保使用正确的版本。我会把这在刚刚<system.web>标签后

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
      <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" /> 
      <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" /> 
      </dependentAssembly> 

     </assemblyBinding> 
    </runtime> 
</configuration> 
+0

是的将这部分添加到app.config(因为我正在运行单元测试而不是Web服务)。我试图找出旧版本的位置。 –

相关问题