この記事の英語版を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

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

 

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 ユーザーは「Troubleshooting Interoperability (Visual Basic)」をご覧ください。 

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

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

表示: