无法加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Common”或其依赖项之一

我搜索谷歌这个,无法找到问题的解决方案。

我的网站引用了引用企业库数据访问组件的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 

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

要手动下载文件,您可以访问https://servicelocation.codeplex.com/

要修复构建警告和错误,只需运行NuGet命令即可安装CommonServiceLocation包 。 该程序包仅包含此一个dll文件。 自2008年以来,Microsoft仅发布了此文件的1个版本(1.0.0.0)。该文件与所有.NET版本和所有Unity版本完全兼容。

感谢您提供此信息

我遇到了同样的问题,我将Framework从2.0升级到4.0,我尝试了你提到的所有内容,但解决方案是为Web.Config文件中的每个EnterpriseLibrary引用设置PublicKeyToken值

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

我能够通过删除app.config文件中的所有日志记录引用来解决此问题::

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

即:

  

变为:

  

这不是理想的,但确实有效……

企业库配置工具会重新设置值,因此您需要注意这一点。 我知道有一种方法可以告诉配置文件接受这些不匹配的设置 – 但我不知道如何。