2008-12-09 28 views
4

使用Enterprise Library 3.1 May 2007版本时出现此错误。我们正在开发一个产品,并在Subversion Trunk目录下有一个共同的lib目录,其中我们放入了所有第三方dll。\ Trunk \ Lib \中的\ Trunk \ Lib \目录下。在这里面我们有Microsoft \ EnterpriseLibrary \ v3.1,其中我们复制了\ Program Files \ Microsoft Enterprise Library May2007 \ bin中的所有dll。一切正常,直到其中一位开发者在这台机器上安装了源代码。在源代码安装结束时有一些dll被复制,一旦完成,他无法再运行该项目。他总是得到这个错误System.IO.FileLoadException

'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

回答

7

我曾经在开发时针对签名版本的dll开发并部署了只有未签名版本可用的版本。

另外,fuslogvw.exe。 EVERY。时间。

0

也许你应该检查DLL的总成 - 和文件版本。如果它们不匹配,则可能发生此异常。

0

阅读here开始进行程序集加载调试。

总之,您需要检查Fusion日志以获取更多信息。

对于一个“的位于集的清单 定义与名称[yourAssembly] 不匹配组件参考” 消息(HRESULT FUSION_E_REF_DEF_MISMATCH, 0x80131040):融合日志会说的 哪一部分装配参考 未能匹配找到的内容。它 将是程序集名称,文化, 公钥(或令牌)或版本(如果 找到的程序集是 强命名)。

1

我认为错误在于开发人员已经编译了代码与未签名的源代码编译。

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

Microsoft.Practices.EnterpriseLibrary.Data,Version = 3.1.0。0,文化=中立,公钥=空

应该是这样的:

Microsoft.Practices.EnterpriseLibrary.Data,版本= 3.1.0.0,文化=中立,公钥= fa03fef243232

相关问题