2017-06-20 270 views
2

我遇到了一個問題,我收到有關嘗試加載舊版本的DLL的錯誤信息,該DLL甚至不在本機上。綁定重定向不重定向?

無法加載文件或程序集 'Newtonsoft.Json,版本= 6.0.0.0, 文化=中性公鑰= 30ad4fe6b2a6aeed' 或它 的一個依賴。找到的程序集的清單定義不符合程序集引用的 。 (異常來自HRESULT:0x80131040)

我已經在webconfig重定向來處理這個:

<dependentAssembly> 
    <assemblyIdentity name="NewtonSoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> 
</dependentAssembly> 

有到6.0.0.0構建的解決方案沒有提及。也許依賴?如果是這樣,我不知道如何讓跑步時間告訴我誰是有罪的部分。

爲什麼這仍然是錯誤的?

+0

Azure SDK是我運行最頻繁的一個dep 6.0.0.0。 – vcsjones

+0

@vcsjones我們根本不使用Azure。 – asawyer

+0

你有另一個可能使用該版本的Newtonsoft.Json的項目嗎? – ybrajim

回答

2

原來,答案就在我面前。 assemblyBinding標籤具有一個appliedTo屬性,該屬性指定應根據.Net框架版本重定向哪些版本。

assemblyBinding appliesTo="v2.0.50727" 

出於某種原因,它被設置爲2.0 - 應用程序正在運行V4.0所以重定向這裏不適用。刪除屬性可以解決問題。

<runtime> 
    <assemblyBinding> 
     <dependentAssembly> 
      <assemblyIdentity name="NewtonSoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
      <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime>