1. 程式人生 > >關於.net程序集引用不匹配的問題

關於.net程序集引用不匹配的問題

public same org 百度 con 提示 加載 detail form

今天啟動asp.net mvc 程序,其中也用到了web api ,autofac等,為了版本兼容性問題,將mvc和 web api 的版本控制到5.2.0.0,Newtonsoft.Json 的版本是6.0.0.0,但結果還是報錯了

未能加載文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一個依賴項。找到的程序集清單定義與程序集引用不匹配。 (異常來自 HRESULT:0x80131040)

日誌信息: 調用程序集: System.Net.Http.Formatting, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35。

用.net reflector查看該dll確實是依賴Newtonsoft.Json, Version=4.5.0.0

通過找到該dll的路徑發現是Microsoft.AspNet.WebApi.Client包的,於是


查看了Microsoft.AspNet.WebApi.Client 5.2.0的nuget詳細信息,依賴項的版本是 Newtonsoft.Json (>= 4.5.11) ,按照信息是可以的,但是怎麽還報錯了?

後來百度了一下:讓.NET程序兼容不同版本的Dll文件

結果找到如下解決方法:在webconfig的runtime->assemblyBing節點下添加

<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="4.5.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

結果運行成功

ps:用此方法的前提是兩個版本的dll的publicKeyToken要一致,查看publickeytoken可以打開SDK命令提示,輸入命令:sn -T dll所在路徑

網上也找了一下同時存在兩個版本的解決方法,留作後續研究。

http://www.cnblogs.com/EugeneMay/p/4249709.html

http://stackoverflow.com/questions/2460542/using-different-versions-of-the-same-assembly-in-the-same-folder

關於.net程序集引用不匹配的問題