System.IO.FileLoadException

时间:2008-12-09 10:30:16

标签: c# .net enterprise-library fileloadexception

使用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目录中。我们还将Dll从Microsoft Enterprise Library May 2007 \ bin目录复制到我们的产品开发目录中,并引用我们的项目,并将copylocal标志设置为true。

任何人都可以帮助我吗

RK

4 个答案:

答案 0 :(得分:7)

当我针对已签名版本的dll进行开发并部署在只有未签名版本的地方时,我就习惯了。

此外,fuslogvw.exe。 EVERY。 TIME。

答案 1 :(得分:1)

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

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

Microsoft.Practices.EnterpriseLibrary.Data,Version = 3.1.0.0,Culture = neutral, PublicKeyToken = null

应该是这样的:

Microsoft.Practices.EnterpriseLibrary.Data,Version = 3.1.0.0,Culture = neutral, PublicKeyToken = fa03fef243232

答案 2 :(得分:0)

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

答案 3 :(得分:0)

阅读here以开始汇编加载调试。

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

  

对于“找到的集会的清单   名称定义[yourAssembly]   与装配参考不匹配“   消息(对于hresult   FUSION_E_REF_DEF_MISMATCH,   0x80131040):Fusion日志会说   哪个部分的装配参考   无法匹配发现的内容。它   将是集会名称,文化,   公钥(或令牌)或版本(如果   找到的组件是   强命名)。