2016-01-25 43 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服務)。我試圖找出舊版本的位置。 –

相關問題