簡體   English   中英

無法加載文件或程序集“Microsoft.Practices.EnterpriseLibrary.Common”或其依賴項之一

[英]Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Common' or one of its dependencies

我已經在谷歌上搜索了這個,但找不到問題的解決方案。

我的網站引用 DAL(自定義 dll),后者引用企業庫數據訪問組件。

我已經從NuGet Package Manager添加了企業庫,當我嘗試構建網站時彈出此編譯錯誤:

錯誤 44 無法加載文件或程序集“Microsoft.Practices.EnterpriseLibrary.Common”或其依賴項之一。 找到的程序集的清單定義與程序集引用不匹配

我已經嘗試在Enterprise Library dlls的 DAL 中設置Copy Local = True並且 dll 與DAL dll一起傳輸到網站的 Bin 目錄,但仍然彈出錯誤。

任何人都可以在這方面指導我......

問題是您正在使用的DLL和項目中引用的DLL是不同的。 我不確定清單中的差異是什么,但它可能是版本和/或公鑰。

你有幾件事要嘗試:

  1. 在項目中打開DLL引用的屬性,並將Version Specific設置為false。

  2. 刪除引用,從bin文件夾中刪除DLL,然后重新添加引用。

  3. 您的GAC中也可能有不同/不正確的版本。 為了確保您始終使用特定的已知版本創建相對於項目目錄的程序集文件夾,將dll復制到該目錄,並在程序集目錄中添加對DLL的引用,而不是在GAC或其他地方添加在你的機器上。 這將確保僅使用您為應用程序定位的特定版本,而不是稍后在您的計算機上更新的任何版本。

NuGet CommonServiceLocator

Install-Package CommonServiceLocator

作為某些Windows應用程序安裝的一部分,這個dll可能在開發人員機器上的GAC中(我最好的猜測是Visual Studio或SSMS)。 這就是為什么我們可能會在構建機器上收到警告或錯誤,我們會盡力保持GAC像生產服務器一樣干凈。

要手動下載文件,您可以訪問https://servicelocation.codeplex.com/

要修復構建警告和錯誤,只需運行NuGet命令即可安裝CommonServiceLocation包 該程序包僅包含此一個dll文件。 自2008年以來,Microsoft僅發布了此文件的1個版本(1.0.0.0)。該文件與所有.NET版本和所有Unity版本完全兼容。

為Web.Config中的每個EnterpriseLibrary引用設置PublicKeyToken值為我修復了它。

我能夠通過刪除app.config文件中的所有日志記錄引用來解決此問題::

, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null

即:

    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, 
Microsoft.Practices.EnterpriseLibrary.Logging, 
Version=6.0.0.0, Culture=neutral, PublicKeyToken=null" 
requirePermission="true" />

變為:

     <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, 
Microsoft.Practices.EnterpriseLibrary.Logging" 
requirePermission="true" />

這不是理想的,但確實有效......

企業庫配置工具將值設置回來,因此您需要注意這一點。 我知道有一種方法可以告訴配置文件接受這些不匹配的設置 - 但我不知道如何。

去掉引用,從bin文件夾和VS中刪除DLL,重新添加引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM