zoukankan      html  css  js  c++  java
  • .Net 程序在运行中出现System.BadImageFormatException的解决方法

    原文链接:https://docs.microsoft.com/en-us/dotnet/api/system.badimageformatexception?view=net-5.0

    本文是翻译上面而来,如果有任何错误,请指正。

    当动态链接库(.dll文件)或可执行文件(.exe文件)的文件格式不符合公共语言运行库期望的格式时,将引发此异常。 特别是在以下情况下会引发异常:

    1 .NET实用程序的早期版本(例如ILDasm.exe或installutil.exe)与通过更高版本的.NET开发的程序集一起使用。若要解决此异常,请使用与用于开发程序集的.NET版本相对应的工具版本。 这可能需要修改Path环境变量或为正确的可执行文件提供完全限定的路径。

    2 试图加载非托管动态链接库或可执行文件(例如Windows系统DLL),就像它是.NET程序集一样。 下面的示例通过使用Assembly.LoadFile方法加载Kernel32.dll来说明这一点。

     1 // Windows DLL (non-.NET assembly)
     2 string filePath = Environment.ExpandEnvironmentVariables("%windir%");
     3 if (! filePath.Trim().EndsWith(@""))
     4    filePath += @"";
     5 filePath += @"System32Kernel32.dll";
     6 
     7 try {
     8    Assembly assem = Assembly.LoadFile(filePath);
     9 }
    10 catch (BadImageFormatException e) {
    11    Console.WriteLine("Unable to load {0}.", filePath);
    12    Console.WriteLine(e.Message.Substring(0,
    13                      e.Message.IndexOf(".") + 1));
    14 }
    15 // The example displays an error message like the following:
    16 //       Unable to load C:WINDOWSSystem32Kernel32.dll.
    17 //       The module was expected to contain an assembly manifest.

    3.试图在除仅反射上下文之外的上下文中加载参考程序集。可以通过以下两种方式之一解决此问题:

    •        可以加载实现程序集而不是参考程序集。
    •        可以通过调用Assembly.ReflectionOnlyLoad方法在仅反射的上下文中加载参考程序集

    4. DLL或可执行文件以64位程序集的形式加载,但包含32位功能或资源。例如,它依赖于COM互操作或调用32位动态链接库中的方法。解决的方法:请将项目的Platform target属性设置为x86(而不是x64或AnyCPU)并重新编译。

    5.应用程序的组件是使用.NET的不同版本创建的。通常,当使用.NET Framework 1.0或.NET Framework 1.1开发的应用程序或组件尝试加载使用.NET Framework 2.0 SP1或更高版本开发的程序集时,或者当开发了应用程序时,会发生此异常。使用.NET Framework 2.0 SP1或.NET Framework 3.5尝试加载使用.NET Framework 4或更高版本开发的程序集。 BadImageFormatException可能会报告为编译时错误,或者可能在运行时引发异常。下面的示例定义一个StringLib类,该类具有单个成员ToProperCase,并且位于名为StringLib.dll的程序集中。

    6.应用程序的组件针对不同的平台。 例如,您尝试在x86应用程序中加载ARM程序集。 您可以使用以下命令行实用工具来确定单个.NET程序集的目标平台。 文件列表应在命令行以空格分隔的列表形式提供。

  • 相关阅读:
    2020春Python程序设计_练习1
    热词分析——性能战术
    《淘宝网》质量属性
    架构师应该如何工作?
    寒假学习(十四)
    寒假学习(十三)
    灭霸冲刺(3)
    灭霸冲刺(2)
    灭霸冲刺(1)
    灭霸计划会议
  • 原文地址:https://www.cnblogs.com/VARForrest/p/14416512.html
Copyright © 2011-2022 走看看