Risoluzione dei problemi relativi alle eccezioni: System.BadImageFormatException

Un'eccezione BadImageFormatException viene generata quando l'immagine del file di una DLL o un programma eseguibile non è un eseguibile gestito.

Suggerimenti associati

  • Se l'applicazione utilizza componenti a 32 bit, assicurarsi che venga sempre eseguita come applicazione a 32 bit.
    Se la proprietà Platform target per il progetto dell'applicazione è impostata su AnyCPU, l'applicazione compilata può essere eseguita nella modalità a 64 bit o a 32 bit. Quando viene eseguita come applicazione a 64 bit, il compilatore JIT (just-in-time) genera codice nativo a 64 bit. Se l'applicazione dipende da un componente gestito o non gestito a 32 bit, tale componente non verrà caricato in modalità a 64 bit. Per risolvere il problema, impostare la proprietà Platform target del progetto su x86 e ricompilare.

  • Assicurarsi di non utilizzare un componente creato con una versione diversa di .NET Framework.
    Questa eccezione viene generata quando un'applicazione o un componente sviluppato con .NET Framework 1.0 o .NET Framework 1.1 tenta di caricare un assembly sviluppato con .NET Framework 2.0 SP1 o versioni successive o quando un'applicazione sviluppata con .NET Framework 2.0 SP1 o .NET Framework 3.5 tenta di caricare un assembly sviluppato con .NET Framework 4. L'eccezione BadImageFormatException può essere segnalata come errore in fase di compilazione oppure è possibile che l'eccezione venga generata in fase di esecuzione. Per un esempio, vedere la classe BadImageFormatException.

  • Assicurarsi che l'immagine del file sia un assembly o un modulo gestito valido.
    Questa eccezione viene generata quando una DLL o un eseguibile non gestito viene passato al metodo Load per il caricamento.

    Per ulteriori informazioni, gli utenti di Visual Basic possono consultare Troubleshooting Interoperability.

Osservazioni

Questa eccezione può essere generata dalla reflection su file eseguibili C++. Nella maggior parte dei casi la causa è la rimozione da parte del compilatore C++ degli indirizzi di rilocazione oppure della sezione .Reloc nel file eseguibile. Per mantenere l'indirizzo di rilocazione in un file eseguibile C++, specificare /fixed:no durante il collegamento.

Per altre cause di questa eccezione, vedere la descrizione della classe BadImageFormatException.

Vedere anche

Attività

Procedura: utilizzare Informazioni sulle eccezioni

Riferimenti

BadImageFormatException

Cronologia delle modifiche

Data

Cronologia

Motivo

Aprile 2011

Aggiunte le cause comuni dell'eccezione.

Commenti e suggerimenti dei clienti.