尝试配置企业库 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(数据访问应用程序块)时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
Tableau Desktop 日常问题 5.0打开第二个 Tableau 桌面实例时出现错误“连接错误:Tableau 无法连接到数据源“