例外のトラブルシューティング : System.BadImageFormatException

更新 : 2011 年 4 月

BadImageFormatException 例外は、DLL または実行可能プログラムのファイル イメージが有効なマネージ実行可能ファイルでない場合にスローされます。

関連するヒント

  • アプリケーションで 32 ビット コンポーネントを使用する場合は、常に 32 ビット アプリケーションとして実行します。
    アプリケーション プロジェクトの [プラットフォーム ターゲット] プロパティを "AnyCPU" に設定した場合、コンパイルされたアプリケーションは 64 ビット モードまたは 32 ビット モードで実行できます。 64 ビット アプリケーションとして実行した場合、Just-In-Time (JIT) コンパイラは 64 ビット ネイティブ コードを生成します。 アプリケーションが 32 ビットのマネージまたはアンマネージ コンポーネントに依存する場合、そのコンポーネントは 64 ビット モードでの読み込みに失敗します。 この問題を修正するには、プロジェクトの [プラットフォーム ターゲット] プロパティを "x86" に設定し、再コンパイルします。

  • .NET Framework の別のバージョンで作成されたコンポーネントは使用しないようにします。
    この例外は、.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 例外がコンパイル時のエラーとして報告されたり、実行時に例外がスローされたりする場合があります。 例については、BadImageFormatException クラスのトピックを参照してください。

  • ファイル イメージが有効なマネージ アセンブリまたはマネージ モジュールであることを確認します。
    この例外は、アンマネージ ダイナミック リンク ライブラリまたは実行可能ファイルが読み込みのために Load メソッドに渡された場合にスローされます。

    詳細については、Visual Basic ユーザーは「相互運用性のトラブルシューティング (Visual Basic)」を参照してください。

解説

C++ 実行可能ファイルにリフレクションを実行すると、この例外がスローされる場合があります。 最大の原因は、C++ コンパイラが再配置アドレスまたは .Reloc セクションを実行可能ファイルから除去することです。 C++ 実行ファイルの再配置アドレスを保持するには、リンク時に /fixed:no を指定します。

この例外の原因の詳細については、BadImageFormatException クラスのトピックを参照してください。

参照

処理手順

方法: 例外処理アシスタントを使用する

参照

BadImageFormatException

履歴の変更

日付

履歴

理由

2011 年 4 月

例外の一般的な原因に関する記述を追加しました。

カスタマー フィードバック