未能加載文件或程序集“xxx, Version=x.x.x.x, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx”或它的某一個依賴項。系統找不到指定的文件


問題描述

一個項目引用不同版本的同一dll,會引發以下報錯:

未能加載文件或程序集“xxx, Version=x.x.x.x, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx”或它的某一個依賴項。系統找不到指定的文件 

這里來解決項目中同一dll的多版本問題。

解決方式

通過配置web.config配置文件(app.config或web.config)增加配置節點

不同場景有不同的解決方式,下面說明

1. 場景一   以高版本兼容

例如:新舊項目都引用Newtonsoft.Json,但是不同版本。需要以最高版本兼容。 

 

[html]  view plain  copy
 
 
 
  1. <runtime>  
  2.   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
  3.     <dependentAssembly>  
  4.       <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>  
  5.       <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>  
  6.     </dependentAssembly>  
  7.   </assemblyBinding>  
  8. </runtime>  

 

2. 場景二   同一dll兩種版本共存

例如:項目自己引用log4net.dll 版本1.2.13.0 。添加第三方某個dll,第三方依賴log4net.dll版本1.2.9.0,項目中需要兩種版本共存。
這里還分兩種情況,dll的publicKeyToken相同還是不同 (publicKeyToken查詢見說明1)
publicKeyToken相同,配置方法:
[html]  view plain  copy
 
 
 
  1. <runtime>  
  2.   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
  3.     <dependentAssembly>  
  4.       <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" />  
  5.       <codeBase version="1.2.13.0" href="bin\log4netdll\1_2_13\log4net.dll" />  
  6.       <codeBase version="1.2.9.0" href="bin\log4netdll\1_2_9\log4net.dll" />  
  7.     </dependentAssembly>  
  8.   </assemblyBinding>  
  9. </runtime>  

publicKeyToken不同,配置方法:
[html]  view plain  copy
 
 
 
  1. <runtime>  
  2.   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
  3.     <dependentAssembly>  
  4.       <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" />  
  5.       <codeBase version="1.2.13.0" href="bin\log4netdll\1_2_13\log4net.dll" />  
  6.     </dependentAssembly>  
  7.     <dependentAssembly>  
  8.       <assemblyIdentity name="log4net" publicKeyToken="b32731d11ce58905" />  
  9.       <codeBase version="1.2.9.0" href="bin\log4netdll\1_2_9\log4net.dll" />  
  10.     </dependentAssembly>  
  11.   </assemblyBinding>  
  12. </runtime>  
 

說明

1.publicKeyToken獲取方式:使用vs的Tools Command Prompt命令行工具,輸入:SN -T "path",例如:

 

  1.  
    C:\Program Files (x86)\Microsoft Visual Studio 11.0>SN -T "D:\project\liberary\External\log4net.dll"
  2.  
     
  3.  
    Microsoft(R) .NET Framework 強名稱實用工具 版本 4.0.30319.17929
  4.  
    版權所有(C) Microsoft Corporation。保留所有權利。
  5.  
     
  6.  
    公鑰標記為 b32731d11ce58905

 

注意:href的路徑要保證正確。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 未能加載文件或程序集“XXXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一個依賴項。系統找不到指定的文件。 未能加載文件或程序集Office, Version=2.2.0.0, Culture=neutral, PublicKeyToken=null或它的某一個依賴項。找到的程序集清單定義與程序集引用不匹配。 (異常來自 HRESULT:0x80131040) 未能加載文件或程序集“System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一個依賴項。系統找不到指定的文件。 未能加載文件或程序集“System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一個依賴項。系統找不到指定的文件。 未能加載文件或程序集“Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5”或它的某一個依賴項。系統找不到指定的文件。 未能加載文件或程序集“Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一個依賴項。系統找不到指定的文件。 未能加載文件或程序集Office, Version=2.2.0.0, Culture=neutral, PublicKeyToken=null或它的某一個依賴項 未能加載文件或程序集“Microsoft.Vbe.Interop, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一個依賴項。系統找不到制定的文件。 未能加載文件或程序集"Newtonsoft.Json,Version=4.5.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed"或它的某一個依賴項。找到的程序集清單定義與程序集引用不匹配。(異常來自HRESULT:0x80131040) 解決:未能加載文件或程序集“System.Web.Http, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一個依賴項。找到的程序集清單定義與程序集引用不匹配。 (異常來自 HRESULT:0x80131040)
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM