尝试配置企业库 5.0(数据访问应用程序块)时出现问题

Posted

技术标签:

【中文标题】尝试配置企业库 5.0(数据访问应用程序块)时出现问题【英文标题】:Problem when trying to configure enterprise library 5.0 (Data Access Application Block) 【发布时间】:2011-02-20 10:03:51 【问题描述】:

我在尝试从 Enterprise library 5.0 运行 DAAB 时遇到了一些问题。我已按照教程中的步骤进行操作,但出现错误...

1) 下载/安装企业库

2)添加对我需要的块的引用(common / data)

3) 进口

Imports Microsoft.Practices.EnterpriseLibrary.Common
Imports Microsoft.Practices.EnterpriseLibrary.Data

4) 通过企业库配置软件。我从我的站点打开 web.config。然后我点击块,然后添加数据设置...填写我的详细信息并保存/关闭

5)然后(认为设置完成)尝试通过

获取数据库实例
 Dim db As Database = DatabaseFactory.CreateDatabase() 

6) 我编译并收到以下错误:

无法加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)(C:\site\web.config 第 4 行)

我的 web.config 的第 4 行是由配置工具生成的,并且是:

<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />

我是否缺少必需的步骤?我是否以错误的顺序完成了这些步骤?我是不是搞错了?

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

生成

<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />                      
        <section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />   
        <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />      

【讨论】:

【参考方案2】:

除了@Nicolas 回答的内容之外,您还可以通过删除 app.config 中与 Enterprise Library 5.0 dll 一起使用的公共令牌来解决此问题

【讨论】:

【参考方案3】:

企业库有2个下载...

Enterprise Library 5.0 - 源代码.msi 企业库 5.0.msi

只有第二个有签名的二进制文件......这是解决“清单定义与程序集引用不匹配”错误所必需的

(仅供参考,如果您选择安装,第二个还包括源代码)

【讨论】:

还有一个 Enterprise Library 5.0 Optional Update 1。它的版本是 5.0.505.0,如果在现有项目的 Enterprise Library 5.0 的位置安装它会导致错误。【参考方案4】:

我已经看到你得到了答案;但是,我想指出的是,当您从 VS 打开配置工具时,您可以选择告诉配置工具您想要引用哪些程序集:

    在 VS2010 中:打开属性编辑器窗口,然后从解决方案资源管理器中选择解决方案文件。 您将看到选项“Enterprise Library 5 Assembly Set,其中包含使用签名版本 (Microsoft Signed) 或未签名版本 (EntLibV5Src) 的选项

当您启动配置工具时;它将根据您的选择引用配置文件中的程序集。

【讨论】:

这对我有用。还有一点:如果您的配置文件中已经有一些被引用为已签名的 EntLib 特定内容,并且您想使用未签名版本的 EntLib 库,则需要从配置文件中手动删除 PublicKeyToken=,无论它在 EntLib 中使用什么语境。否则 ConfigEditor 将无法打开,您将获得相同的异常。【参考方案5】:

答案:

我不小心引用了 src 代码文件夹中的程序集。这意味着公共令牌将具有 = null。我重新引用了 C:\Program Files\Microsoft Enterprise Library 5.0\Bin 中的程序集,现在问题已经解决了。

【讨论】:

这对我有用,但我必须在对 DLL 的更改生效之前清理并重建我的解决方案【参考方案6】:

您可能需要做的是将项目属性中的目标框架从“.NET Framework 4 Client Profile”更改为“.NET Framework 4”。

当你第一次创建控制台项目时,VS 2010 默认创建."NET Framework 4 Client Profile"。 EL 5 使用“.NET Framework 4”编译,您的项目很难解析 EL dll。

【讨论】:

以上是关于尝试配置企业库 5.0(数据访问应用程序块)时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

访问存储的 Proc 输出参数时出现间歇性空引用错误

构建时出现 Apple LLVM 5.0 错误

访问项目页面时出现 GitLab 500 错误

Tableau Desktop 日常问题 5.0打开第二个 Tableau 桌面实例时出现错误“连接错误:Tableau 无法连接到数据源“

尝试从 aws ec2 客户端访问存储桶时出现位置约束异常

MySQL 7.0.6-IR3 版本尝试连接数据库时出现问题