(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

BadImageFormatException-Klasse

Die Ausnahme, die bei Ungültigkeit des Image einer DLL (Dynamic Link Library)-Datei oder einer ausführbaren Programmdatei ausgelöst wird.

System.Object
  System.Exception
    System.SystemException
      System.BadImageFormatException

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class BadImageFormatException : SystemException

Der BadImageFormatException-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsBadImageFormatException()Initialisiert eine neue Instanz der BadImageFormatException-Klasse.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsBadImageFormatException(String)Initialisiert eine neue Instanz der BadImageFormatException-Klasse mit einer angegebenen Fehlermeldung.
Geschützte MethodeBadImageFormatException(SerializationInfo, StreamingContext)Initialisiert eine neue Instanz der BadImageFormatException-Klasse mit serialisierten Daten.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsBadImageFormatException(String, Exception)Initialisiert eine neue Instanz der BadImageFormatException-Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme ausgelöst hat.
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsBadImageFormatException(String, String)Initialisiert eine neue Instanz der BadImageFormatException-Klasse mit einer angegebenen Fehlermeldung und einem angegebenen Dateinamen.
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsBadImageFormatException(String, String, Exception)Initialisiert eine neue Instanz der BadImageFormatException-Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme ausgelöst hat.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsDataRuft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zu der Ausnahme bereitstellen. (Von Exception geerbt.)
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsFileNameRuft den Namen der Datei ab, die diese Ausnahme verursacht hat.
Öffentliche EigenschaftFusionLogRuft die Protokolldatei ab, in der beschrieben wird, warum das Laden einer Assembly fehlschlug.
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsHelpLinkRuft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest. (Von Exception geerbt.)
Öffentliche EigenschaftUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsHResultRuft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist. (Von Exception geerbt.)
Öffentliche EigenschaftUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsInnerExceptionRuft die Exception-Instanz ab, die die aktuelle Ausnahme verursachte. (Von Exception geerbt.)
Öffentliche EigenschaftUnterstützt von XNA FrameworkMessageRuft die Fehlermeldung und den Namen der Datei ab, die diese Ausnahme verursacht hat. (Überschreibt Exception.Message.)

In XNA Framework 3.0 wird dieser Member von Exception geerbt.Message.
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsSourceGibt den Namen der Anwendung oder des Objekts zurück, das den Fehler verursacht hat, oder legt diesen fest. (Von Exception geerbt.)
Öffentliche EigenschaftUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsStackTraceRuft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab. (Von Exception geerbt.)
Öffentliche EigenschaftTargetSiteRuft die Methode ab, die die aktuelle Ausnahme auslöst. (Von Exception geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Geschützte MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetBaseExceptionGibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die ursprüngliche Ursache für eine oder mehrere nachfolgende Ausnahmen ist. (Von Exception geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetHashCodeFungiert als die Standardhashfunktion. (Von Object geerbt.)
Öffentliche MethodeGetObjectDataLegt das SerializationInfo-Objekt mit dem Dateinamen, dem Assemblycache-Protokoll und zusätzlichen Informationen zur Ausnahme fest. (Überschreibt Exception.GetObjectData(SerializationInfo, StreamingContext).)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetTypeRuft den Laufzeittyp der aktuellen Instanz ab. (Von Exception geerbt.)

In XNA Framework 3.0 wird dieser Member von Object geerbt.GetType().


In Portable Klassenbibliothek Portable Klassenbibliothek wird dieser Member von Object geerbt.GetType().


In .NET für Windows Store-Apps Windows 8 wird dieser Member von Object geerbt.GetType().
Geschützte MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkToStringGibt den vollqualifizierten Namen dieser Ausnahme und ggf. die Fehlermeldung sowie den Namen der inneren Ausnahme und die Stapelüberwachung zurück. (Überschreibt Exception.ToString().)

In XNA Framework wird dieser Member von ToString() überschrieben.
Zum Seitenanfang

  NameBeschreibung
Geschütztes EreignisSerializeObjectStateTritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt zu erstellen, das serialisierte Daten für die Ausnahme enthält. (Von Exception geerbt.)
Zum Seitenanfang

Diese Ausnahme wird ausgelöst, wenn das Dateiformat einer Dynamic Link Library (DLL-Datei) oder einer ausführbaren Datei (EXE-Datei) dem Format nicht entspricht, das von der Common Language Runtime erwartet wird. Die Ausnahme wird unter den folgenden Bedingungen ausgelöst:

  • Eine frühere Version eines .NET Framework-Hilfsprogramms, z. B. ILDasm.exe oder installutil.exe, wird mit einer Assembly verwendet, die mit einer höheren Version von .NET Framework entwickelt wurde.

    Um diese Ausnahme zu behandeln, verwenden Sie das Tool, das der Version von .NET Framework entspricht, die zum Entwickeln der Assembly verwendet wurde. Dies erfordert möglicherweise das Ändern der Path-Umgebungsvariable oder Bereitstellen eines vollqualifizierten Pfads für die richtige ausführbare Datei.

  • Es wird versucht, eine nicht verwaltete Dynamic Link Library oder eine ausführbare Datei (z. B. eine Windows-System-DLL) zu laden, als ob es eine .NET Framework-Assembly ist. Im folgenden Beispiel wird dies mithilfe der Assembly.LoadFile-Methode zum Laden von 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.
    
    
    

    Um diese Ausnahme zu behandeln, greifen Sie auf die in der DLL definierten Methoden zu, indem Sie die von der Entwicklungssprache bereitgestellten Funktionen verwenden, z. B. die Declare-Anweisung in Visual Basic oder das DllImportAttribute-Attribut mit dem extern-Schlüsselwort in C#.

  • Eine DLL oder eine ausführbare Datei wird als 64-Bit-Assembly geladen, aber sie enthält 32-Bit-Funktionen oder Ressourcen. Es benötigt z. B. COM-Interop oder ruft Methoden in einer 32-Bit-Dynamic Link Library auf.

    Um diese Ausnahme zu behandeln, legen Sie die Eigenschaft Zielplattform des Projekts auf x86 (statt x64 oder AnyCPU) fest und kompilieren diese neu.

  • Komponenten wurden mit anderen Versionen von .NET Framework erstellt. In der Regel tritt diese Ausnahme auf, wenn eine Anwendung oder eine Komponente, die mit .NET Framework 1.0 entwickelt wurde, oder der .NET Framework 1.1 versucht, eine Assembly zu laden, die mit .NET Framework 2.0 SP1 oder höher entwickelt wurde, oder wenn eine Anwendung, die mit .NET Framework 2.0 SP1 oder .NET Framework 3.5 entwickelt wurde, versucht, eine Assembly zu laden, die mit .NET Framework 4 entwickelt wurde. Der BadImageFormatException wird möglicherweise als Kompilierungsfehler gemeldet, oder die Ausnahme wird möglicherweise zur Laufzeit ausgelöst. Dieser Prozess wird anhand des folgenden Szenarios veranschaulicht. Es wird eine StringLib-Klasse definiert, die über einen einzigen Member (ToProperCase) verfügt und sich in der Assembly StringLib.dll befindet.

    
    using System;
    
    public class StringLib
    {
       private string[] exceptionList = { "a", "an", "the", "in", "on", "of" };
       private char[] separators = { ' ' };
    
       public string ToProperCase(string title)
       {
          bool isException = false;	
    
          string[] words = title.Split( separators, StringSplitOptions.RemoveEmptyEntries);
          string[] newWords = new string[words.Length];
    		
          for (int ctr = 0; ctr <= words.Length - 1; ctr++)
          {
             isException = false;
    
             foreach (string exception in exceptionList)
             {
                if (words[ctr].Equals(exception) && ctr > 0)
                {
                   isException = true;
                   break;
                }
             }
    
             if (! isException)
                newWords[ctr] = words[ctr].Substring(0, 1).ToUpper() + words[ctr].Substring(1);
             else
                newWords[ctr] = words[ctr];	 
          }	
          return String.Join(" ", newWords); 			
       }
    }
    // Attempting to load the StringLib.dll assembly produces the following output:
    //    Unhandled Exception: System.BadImageFormatException: 
    //                         The format of the file 'StringLib.dll' is invalid.
    
    
    

    Im folgenden Beispiel wird Reflektion verwendet, um eine Assembly mit dem Namen StringLib.dll zu laden. Wenn der Quellcode mit einem .NET Framework 1.1-Compiler kompiliert wird, wird eine BadImageFormatException von der Assembly.LoadFrom-Methode ausgelöst.

    
    using System;
    using System.Reflection;
    
    public class Example
    {
       public static void Main()
       {
          string title = "a tale of two cities";
    //      object[] args = { title}
          // Load assembly containing StateInfo type.
          Assembly assem = Assembly.LoadFrom(@".\StringLib.dll");
          // Get type representing StateInfo class.
          Type stateInfoType = assem.GetType("StringLib");
          // Get Display method.
          MethodInfo mi = stateInfoType.GetMethod("ToProperCase");
          // Call the Display method. 
          string properTitle = (string) mi.Invoke(null, new object[] { title } );
          Console.WriteLine(properTitle);
       }
    }
    
    
    

    Um diese Ausnahme zu behandeln, stellen Sie sicher, dass die Assembly, von der die Ausnahme ausgelöst wird, versucht, eine Assembly zu laden, die mit einer kompatiblen Version von .NET Framework entwickelt wurde.

BadImageFormatException verwendet HRESULT COR_E_BADIMAGEFORMAT mit dem Wert 0x8007000B.

Eine Liste der anfänglichen Eigenschaftswerte für eine Instanz von BadImageFormatException finden Sie unter BadImageFormatException-Konstruktoren.

.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft