我正在玩我的mvc項目。引用不同版本的Json.NET dll
我Nugeted一個叫SocialAuth.Net包到項目,又使用Newtonsoft.Json.dll 4.0.0.0(舊的)作爲它的一個依賴。
然後因爲我自己也需要Json.Net,所以我想要一個更新的版本,所以我Nugeted Json.NET,它有一個更新的版本4.5.0.0(更新)。
然後問題發生。在我的Razor視圖 「ViewBag.Title = ......」 它紅色下劃線說:
Warning 1 c:\users\admin\documents\visual studio 2010\Projects\WebApp\WebApp\Views\Home\Index.cshtml: ASP.NET runtime error: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
這是我的web.config的JSON的一部分:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
</dependentAssembly>
所以,
我去參考,檢查和發現Newtonsoft.Json是4.0.0.0(可能帶有SocialAuth.Net),我刪除它,並添加了我從Nuget得到的4.5.0.0參考。
我進入了WebApp/bin/debug /文件夾並刪除了所有內容,然後重建了該項目。
但是,一旦我重新構建Web應用程序時,Newton.Json 4.0.0.0回來成BIN /調試/無論我如何手動將其引用到新的NuGet 4.5.0.0。並返回相同的錯誤。我被卡住了。
你有沒有想法如何處理這個DLL問題?謝謝。
編輯-----------------------------------
一點思考後,我明白這是因爲第一個Json.Net(較新的4.5)首先被鏈接,然後那個較舊的那個在構建之後。所以較舊的會覆蓋較新的一個。
我不熟悉GAC安裝,但知道我可以打開那個蠕蟲的罐頭,並在那裏安裝2個版本,我不想這樣做,因爲這意味着我必須爲每臺機器部署網絡應用程序。有沒有辦法使用web.config來解決這個問題?
oldVersion =「0.0.0.0-4.5.0.0」應該是oldVersion =「0.0.0.0-4.0.0.0」 – user516883 2012-10-16 17:07:37