什么是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.

    标签: none

添加新评论