无法加载文件或程序集'Microsoft.Practices.EnterpriseLibrary.Common'或它的一个依赖关系

问题描述:

我搜索了谷歌为此,并找不到解决问题的方法。无法加载文件或程序集'Microsoft.Practices.EnterpriseLibrary.Common'或它的一个依赖关系

我的网站引用了DAL(自定义dll),它引用了企业库数据访问组件。

我从NuGet Package Manager,当我尝试建立这个网站编译错误弹出添加企业库:

错误44未能加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Common”或其依赖之一。在位于集清单定义不匹配的程序集引用

我已经尝试设置在DAL的Copy Local = TrueEnterprise Library dlls和DLL是与DAL dll一起传送到网站的Bin目录,但仍是错误啪啪向上。

任何人都可以指导我这个....

+0

请确保所有EL dll都在文件夹中,包括.Common文件夹。 –

+1

我上面也提到过,dll已经复制到网站bin文件夹 –

+0

当项目设置为.net框架客户端配置文件尝试将其更改为全点网时,此问题是否存在? Sory,如果它是错误的答案 – adopilot

的问题是,你正在使用的DLL和在你的项目中引用的一个不同。我不确定清单中的差异是什么,但它可能是版本和/或公钥。

你有几件事情尝试:

  1. 打开属性项目中的DLL引用,并设置特定版本的假。

  2. 删除引用,从bin文件夹中删除DLL,然后重新添加引用。

  3. 您的GAC中也可能有不同/不正确的版本。为了确保您始终使用特定的已知版本,请创建与您的项目目录相关的程序集文件夹,将dll复制到该目录,然后在assembly目录中添加对DLL的引用,而不是在GAC中或其他位置在你的机器上。这将确保只使用您为应用程序定位的特定版本,而不是稍后在计算机上更新的任何版本。

+1

设置'Version Specific = true'解决了这个问题。我认为这是由于我的系统上安装了多个版本的'EnterpriseLibrary',并且创建了另一个目录并将这些dll放在那里可能会产生相同的效果... –

+0

对我来说(2)有效。我删除了引用错误的引用,并再次读取它们 –

的NuGet CommonServiceLocator

Install-Package CommonServiceLocator 

这个DLL文件可能是在GAC开发者的机器的一些Windows应用程序安装的一部分(我的最佳猜测是Visual Studio或SSMS)。 这就是为什么我们可能会在构建机器上收到警告或错误,我们尽可能保持GAC与生产服务器一样干净。

要手动下载的文件,你可以去https://servicelocation.codeplex.com/

要解决构建警告和错误,你只需要运行的NuGet命令安装CommonServiceLocation package。该软件包只包含这一个dll文件。微软自2008年以来仅发布了该文件的1个版本(1.0.0.0)。该文件与所有.NET版本和所有Unity版本完全兼容。

感谢这个信息

我得到了同样的问题,我升级从2.0框架到4.0,我尝试了所有你提到,但解决的办法是为每个在EnterpriseLibrary基准的设定的公钥值Web.Config文件

同样的问题! 我刚刚清除构建并重建项目。所以,所有旧的东西都去了,并更换了正确的版本。解决了。

我能够从在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" /> 

这并不理想,但确实有效...

企业库配置工具,设置值,所以你需要注意。我知道有一种方法可以告诉配置文件接受这些不匹配的设置 - 但我不知道如何。