追踪DLL导致BadImageFormatException

时间:2015-06-23 19:34:28

标签: c# .net

我们的软件有一个服务器组件,它公开了几个WCF端点。为我们的用户提供培训"模式,我们创建一个动态DLL,它包装我们每个服务接口中的调用。然后将此动态生成的DLL加载到单独的App域中。然后,客户端应用程序可以在"培训"之间切换。模式和"正常"模式,它影响客户端用于通信的端点。

我遇到的问题是我从子App Domain中运行的动态生成的DLL中获取BadImageFormatException。当我引用由我工作的公司中的另一个团队制作的一些DLL时,这个问题就开始了,这对我来说,它是导致问题的依赖DLL之一。我确保两个解决方案中的每个项目都是使用x86标志构建的。一些DLL是.NET 2.0,有些是.NET 4.0,但应用程序本身在.NET 4.0 CLR下运行(它在App.Config文件中设置)所以它没有问题.NET 2.0 DLL。我发现令人困惑的是,所有引用的程序集都是在父App Domain中运行的父可执行文件加载而没有问题,但是一旦在App Domain中运行的生成的DLL尝试加载相同的程序集,我们就会得到BadImageFormatException。 / p>

我很感激有关如何准确追踪导致问题的DLL的任何建议(因为Fusion日志似乎没有给我任何信息)。我是否需要设置标志以确保动态DLL和子App Domain是32位和.NET 4?任何其他建议或意见将不胜感激。

谢谢大家! 安德鲁S

1 个答案:

答案 0 :(得分:0)

如果您正在动态生成DLL,请尝试远离Program Files文件夹。在根驱动器C:\上创建一个文件夹,然后在那里安装软件。