关于System.BadImageFormatException
什么是BadImageFormatException
BadImageFormatException是当动态链接库 (DLL) 或可执行程序的文件映像无效时引发的异常。
可能的原因
如果动态链接库 (.dll 文件) 或可执行文件 (.exe 文件) 的文件格式不符合公共语言运行时所需的格式, 则会引发此异常。 具体而言, 在以下情况下会引发异常:
早期版本的 .NET Framework 实用工具 (如 installutil.exe 或) 与使用 .NET Framework 的更高版本开发的程序集一起使用。
若要解决此异常, 请使用与用于开发程序集的 .NET Framework 版本相对应的工具版本。 这可能需要修改Path
环境变量或为正确的可执行文件提供完全限定的路径。- 尝试加载非托管动态链接库或可执行文件 (如 Windows 系统 DLL), 就像它是 .NET Framework 程序集一样。
下面的示例通过使用Assembly.LoadFile方法加载 kernel32.dll 对此进行了说明。
//Windows DLL (non-.NET assembly) string filePath = Environment.ExpandEnvironmentVariables("%windir%");if (! filePath.Trim().EndsWith(@"\"))
filePath+= @"\";
filePath+= @"System32\Kernel32.dll";try{
Assembly assem=Assembly.LoadFile(filePath);
}catch(BadImageFormatException e) {
Console.WriteLine("Unable to load {0}.", filePath);
Console.WriteLine(e.Message.Substring(0,
e.Message.IndexOf(".") + 1));
}//The example displays an error message like the following://Unable to load C:\WINDOWS\System32\Kernel32.dll.//The module was expected to contain an assembly manifest.- 上一篇: 仅通过转储来排除内存泄漏
- 下一篇: 使用Java中的InputStream读取文件数据