2012-07-11 84 views
5

我正在玩我的mvc項目。引用不同版本的Json.NET dll

  1. 我Nugeted一個叫SocialAuth.Net包到項目,又使用Newtonsoft.Json.dll 4.0.0.0(舊的)作爲它的一個依賴。

  2. 然後因爲我自己也需要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> 

所以,

  1. 我去參考,檢查和發現Newtonsoft.Json是4.0.0.0(可能帶有SocialAuth.Net),我刪除它,並添加了我從Nuget得到的4.5.0.0參考。

  2. 我進入了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來解決這個問題?

+0

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

回答

0

您可以嘗試安裝帶有‑IgnoreDependencies標誌的SocialAuth.Net軟件包,然後手動安裝依賴項並確保只安裝最新版本的Json.Net庫。

然後在運行時,SocialAuth.Net包將尊重程序集重定向並加載Json.Net(v4.5)而不是舊版本。

+0

剛剛測試過。 「-IgnoreDependencies」命令似乎沒有對包做任何事情。它只是用它的4.0版本覆蓋新版本的Json.Net 4.5。 – Tom 2012-07-11 11:18:57

+1

您是否首先卸載了有問題的軟件包?如有可能,請先卸載所有軟件包,然後再使用交換機重新安裝它們。我從來沒有使用過,特別是改變自己,但從文檔中它不應該做你所描述的。 – 2012-07-11 11:25:22

+0

我重新開始了它。證實了SocialAuth。Net忽略了「-IgnoreDependencies」命令,用新的下載爲它帶來了它自己的依賴關係。然後用舊的覆蓋我的新依賴項。作爲Json.Net和log4net ....還注意到,如果我去了Nuget管理器UI並在其描述下檢查了SocialAuth.Net Dependencies,它就會顯示「null」。可能是SocialAuth.Net沒有將它的依賴與Nuget和/或硬連線關聯起來? – Tom 2012-07-11 11:47:21