ProjectB の System.BadImageFormatException のトラブルシューティング
ProjectB を実行すると System.BadImageFormatException
が発生し、ProjectB とその依存関係である ProjectA の間にアーキテクチャの不一致があることを示します。 これは通常、1 つのプロジェクトが 32 ビット (x86) 用にコンパイルされ、もう 1 つのプロジェクトが 64 ビット (x64) 用にコンパイルされることを意味します。
解決策:
ターゲット アーキテクチャの確認: Visual Studio で ProjectA と ProjectB の両方のビルド設定を確認します。 プロジェクトのプロパティで、[ビルド] タブに移動し、[プラットフォーム ターゲット] を調べます。 両方を同じ値に設定する必要があります (例: 「Any CPU」、「x86」、または「x64」)。 ここでの不一致が最も一般的な原因です。
IIS 32 ビット アプリケーションのサポート (該当する場合): ProjectB が IIS に展開された Web アプリケーションの場合、ProjectB をホストしているアプリケーション プールの詳細設定で [32 ビット アプリケーションを有効にする] が有効になっていることを確認します。 。これにより、IIS は 64 ビット システム上で 32 ビット アプリケーションを実行できるようになります。
手動アーキテクチャ調整: 上記の手順が失敗した場合は、ProjectA のアーキテクチャを手動で調整します。 ProjectB と同じビット数 (x86 または x64) をターゲットにして ProjectA を再構築します。 ProjectB のディレクトリ内の対応する DLL を置き換えて、再試行してください。
プロジェクト A のネイティブ イメージ生成 (NGen) を無効にする: ネイティブ イメージの生成では、互換性のないイメージが作成される場合があります。 ProjectA の NGen を無効にするには、このセクションを ProjectB の app.config
ファイルに追加し、"ProjectA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
を ProjectA の正しいアセンブリ情報に置き換えます:
<code class="language-xml"><configuration> <runtime> <gcServer enabled="true" /> <disableNativeImageGeneration> <assemblyIdentity name="ProjectA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> </disableNativeImageGeneration> </runtime> </configuration></code>
これらの解決策でエラーが解決しない場合は、さらなる調査が必要になる可能性があります。 より高度なトラブルシューティング手法については、オンライン リソース (スタック オーバーフローなど) を参照してください。
以上がProjectB の実行時に System.BadImageFormatException が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。