异常处理--“System.BadImageFormatException”类型的未经处理的异常在 DataTest.exe 中发生

时间:2020-12-11 20:26:47

今天写了一个测试的控制台应用程序,需要引用一个第三方dll,结果程序运行到要创建第三方dll中的一个类的实例的时候,总是报异常,“System.BadImageFormatException”类型的未经处理的异常在 DataTest.exe 中发生 。其他信息:“未能加载文件或程序集xxx或它的某一个依赖项。试图加载格式不正确的程序。" 如下图:

异常处理--“System.BadImageFormatException”类型的未经处理的异常在 DataTest.exe 中发生


一般来说,这种异常是由于目标程序的目标平台与其某一依赖项的目标编译平台不一致导致的,把所有的项目都修改到同一目标平台下(X86、X64或AnyCPU,vs2013默认是AnyCPU)进行编译,一般即可解决问题。


我遇到的这个问题,可能是因为第三方的dll的编译平台是x86的,在X64和AnyCPU下均运行不成功,将目标平台改成x86,问题就解决了。

具体操作方法:

在引用第三方dll的项目名称上点右键选择属性,然后在"设置属性"的窗口中找到“生成”,将其中的“目标平台”改成相应的平台后保存就可以了。

异常处理--“System.BadImageFormatException”类型的未经处理的异常在 DataTest.exe 中发生


异常处理--“System.BadImageFormatException”类型的未经处理的异常在 DataTest.exe 中发生


另,如果是Web项目,将程序部署到服务器上之后,还需要将应用程序池中,“启用32位应用程序”项设置为true。如下图:

异常处理--“System.BadImageFormatException”类型的未经处理的异常在 DataTest.exe 中发生