我们的软件有一个服务器组件,它暴露了几个WCF端点。为了给我们的用户提供“训练”模式,我们创建了一个动态DLL,它将呼叫包装在我们的每个服务接口中。这个动态生成的DLL然后被加载到一个单独的App域中。客户端应用程序然后可以在“训练”模式和“正常”模式之间切换,该模式影响客户端用于通信的端点。追踪DLL造成BadImageFormatException
我遇到的问题是我从在子App域中运行的动态生成的DLL中获取BadImageFormatException。当我参考了我工作的公司中的另一个团队所做的一些DLL时,这个问题就开始了,这表明它是导致问题的依赖DLL之一。我确信两个解决方案中的每个项目都是使用x86标志构建的。一些DLL是.NET 2.0,一些是.NET 4.0,但是应用程序本身在.NET 4.0 CLR下运行(它在App.Config文件中设置),所以它没有.NET 2.0 DLL的问题。我发现令人困惑的是,所有引用的程序集都是在父应用程序域中运行的父可执行文件加载而没有问题的,但只要运行在子应用程序域中的生成的DLL尝试加载相同的程序集,就会得到BadImageFormatException。
我将不胜感激关于如何正确追踪哪个DLL导致问题(因为Fusion日志似乎没有给我任何信息)。我是否需要设置标志以确保动态DLL和子App域是32位和.NET 4?任何其他建议或意见将不胜感激。
谢谢大家! Andrew S
如果您确定所有东西都是x86,是否有任何依赖的DLL存在问题中,这可能会丢失。对于依赖关系,这个错误将会出现而不是DllNotFoundException,这使得它相当混乱。 – SteveFerg