例外のトラブルシューティング : 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 クラスのトピックを参照してください。
参照
処理手順
参照
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2011 年 4 月 |
例外の一般的な原因に関する記述を追加しました。 |
カスタマー フィードバック |