4

使用 Enterprise Library 3.1 May 2007 版本时出现此错误。我们正在开发一个产品,并且在 Subversion Trunk 目录下有一个公共的 lib 目录

<>\Trunk\Lib\ 我们将所有第三方 DLL 放入其中。在其中我们有 Microsoft\EnterpriseLibrary\v3.1,我们在其中复制了 \Program Files\Microsoft Enterprise Library May2007\bin 中的所有 dll。在其中一位开发人员在这台机器上安装源代码之前,一切都正常工作。在源代码安装结束时复制了一些 dll,一旦完成,他就无法再运行该项目了。他总是得到这个错误

'Microsoft.Practices.EnterpriseLibrary.Data, Version=3.1.0.0, Culture=neutral, PublicKeyToken=null' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)'

这里有什么问题?我认为在安装源代码时,它只是应该构建所有内容并复制到源代码父目录中的 bin 目录中。此外,我们已将 Microsoft Enterprise Library May 2007\bin 目录中的 Dll 复制到我们的产品开发目录中,并在将 copylocal 标志设置为 true 的情况下引用到我们的项目中。

有谁可以帮我离开这里吗

RK

4

4 回答 4

7

当我针对 dll 的签名版本进行开发并部署在只有未签名版本可用的地方时,我曾经得到过这种情况。

另外,fuslogvw.exe。每一个。时间。

于 2008-12-09T11:22:13.290 回答
1

我认为错误在于开发人员根据他拥有的未签名源代码编译编译了代码。

确保他在编译他的代码之前添加了对已签名 DLL 的引用。

Microsoft.Practices.EnterpriseLibrary.Data,版本=3.1.0.0,文化=中性,PublicKeyToken=null

应该是这样的:

Microsoft.Practices.EnterpriseLibrary.Data,版本=3.1.0.0,文化=中性,PublicKeyToken=fa03fef243232

于 2008-12-09T15:02:25.343 回答
0

也许您应该检查 dll 的 Assembly- 和 FileVersion。如果它们不匹配,则可能发生此异常。

于 2008-12-09T10:37:30.090 回答
0

阅读此处以开始进行程序集加载调试。

简而言之,您需要查看 Fusion 日志以获取更多信息。

对于“名称为 [yourAssembly] 的已定位程序集的清单定义与程序集引用不匹配”消息(对于 hresult FUSION_E_REF_DEF_MISMATCH,0x80131040):Fusion 日志将说明程序集引用的哪个部分与找到的内容不匹配。它将是程序集名称、文化、公钥(或令牌)或版本(如果找到的程序集是强命名的)。

于 2008-12-09T11:20:46.663 回答