13

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

1) 下载/安装企业库

2)添加对我需要的块的引用(公共/数据)

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" />

我错过了一个必需的步骤吗?我是否以错误的顺序完成了这些步骤?我犯错了吗?

非常感谢你的帮助。

4

6 回答 6

20

答案:

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

于 2010-05-18T08:10:51.723 回答
4

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

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

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

于 2011-02-08T15:57:59.600 回答
3

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

于 2011-05-19T11:44:00.453 回答
2

企业库有2个下载...

  • Enterprise Library 5.0 - Source Code.msi
  • 企业库 5.0.msi

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

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

于 2011-04-06T18:52:34.153 回答
1

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

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

于 2010-05-17T13:50:20.650 回答
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" />      
于 2011-05-25T21:07:06.233 回答