WCF服务库:32位dll的BadImageFormatException

时间:2012-10-29 11:07:58

标签: c# wcf .net-4.0

我的项目结构如下:

 myApp 
 -->WCFSerLib (Any CPU Deafult application) 
 -->ClassLib1 (Any CPU)
 -->ClassLib2 (x86)

当我尝试执行我的应用程序时,我很难得到以下错误。

 System.BadImageFormatException was unhandled by user code

无论如何,我能达到以上目的吗?

由于

3 个答案:

答案 0 :(得分:3)

如果我猜对了,你试图在x64 mashine上使用x86 dll。使用AnyCPU,.net框架将自动使用currient架构。

因此,您的应用程序作为x64应用程序运行,该应用程序尝试加载易碎的x86库。所以你有两个选择:

  • 将目标architeture设置为x86
  • 添加/创建x64图书馆

如果你的envireonment变量中有两个版本(x86 / x64),操作系统会自动选择正确的版本。

答案 1 :(得分:1)

我认为您在x64系统上运行应用程序 当WCFService Library或ClassLib1调用ClassLib2中的方法时,以这种方式混合平台类型将导致BFE,因为前两个运行为64位进程而后者被强制在x86模式下运行。

您应该在每个项目上设置相同的平台类型 当然,WCFService库仅支持AnyCPU,因此对每个项目使用AnyCPU平台类型是有意义的。

如果您的ClassLib2需要使用32位库(winscard.dll)并且该库没有64位版本,那么,我认为您应该使用WCF服务应用程序而不是服务库。 See this question

答案 2 :(得分:0)

谢谢你们,

winscard.dll 的问题是它使用了Int32的句柄 .all我更改了用 Int64 替换 Int32