Share via


Problembehandlung bei Ausnahmen: System.BadImageFormatException

Aktualisiert: April 2011

Eine BadImageFormatException-Ausnahme wird ausgelöst, wenn das Dateibild einer DLL oder eines ausführbaren Programms keine gültige verwaltete ausführbare Datei ist.

Zugehörige Tipps

  • Wenn von Ihrer Anwendung 32-Bit-Komponenten verwendet werden, muss sie immer als 32-Bit-Anwendung ausgeführt werden.
    Wenn die Eigenschaft Zielplattform für das Anwendungsprojekt auf AnyCPU festgelegt ist, kann die kompilierte Anwendung entweder im 64-Bit- oder 32-Bit-Modus ausgeführt werden. Wenn sie als 64-Bit-Anwendung ausgeführt wird, generiert der JIT-Compiler (Just-In-Time) 64-Bit-maschinenabhängige Sprache. Wenn die Anwendung von einer verwalteten oder nicht verwalteten 32-Bit-Komponente abhängt, kann diese Komponente nicht im 64-Bit-Modus geladen werden. Um dieses Problem zu beheben, legen Sie die Eigenschaft Zielplattform auf x86 fest, und führen Sie erneut eine Kompilierung aus.

  • Sie dürfen keine Komponente verwenden, die mit einer anderen Version von .NET Framework erstellt wurde.
    Diese Ausnahme wird ausgelöst, wenn eine Anwendung oder Komponente, die mit .NET Framework 1.0 oder .NET Framework 1.1 entwickelt wurde, 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. Die BadImageFormatException-Ausnahme wird möglicherweise als Kompilierzeitfehler gemeldet, oder die Ausnahme wird unter Umständen während der Laufzeit ausgelöst. In der BadImageFormatException-Klasse finden Sie ein Beispiel.

  • Stellen Sie sicher, dass das Dateibild eine gültige verwaltete Assembly oder ein gültiges verwaltetes Modul ist.
    Diese Ausnahme wird ausgelöst, wenn eine nicht verwaltete DLL (Dynamic Link Library) oder eine ausführbare Datei an die Load-Methode zum Laden übergeben wird.

    Visual Basic-Benutzer finden weitere Informationen unter Problembehandlung bei Interoperabilität (Visual Basic) (Visual Basic).

Hinweise

Diese Ausnahme kann durch Reflektion auf ausführbare Dateien in C++ ausgelöst werden. Meistens hat dabei der C++-Compiler die Umsetzungsadressen oder den .Reloc-Abschnitt der ausführbaren Datei entfernt. Damit die Umsetzungsadresse in einer ausführbaren Datei in C++ erhalten bleibt, geben Sie beim Verknüpfen /fixed:no an.

Weitere Ursachen dieser Ausnahme finden Sie in der BadImageFormatException-Klasse.

Siehe auch

Aufgaben

Gewusst wie: Verwenden des Ausnahmen-Assistenten

Referenz

BadImageFormatException

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

April 2011

Häufige Ursachen für Ausnahmen wurden hinzugefügt.

Kundenfeedback.