ファイルまたはアセンブリ 'xxx'またはその依存関係の1つを読み込めませんでした。不正な形式のプログラムを読み込もうとしました


188

Subversionのリビジョンを新しいフォルダにチェックアウトしたところです。ソリューションを開いて、実行するとこれが表示されます。

ファイルまたはアセンブリ 'xxxx'またはその依存関係の1つを読み込めませんでした。不正な形式のプログラムを読み込もうとしました。

これは、以前チェックしたコードと同じです。なぜ今これをしているのですか?そのxxxプロジェクトのbinフォルダーに、DebugだけでなくDebug x86も表示されます。Debug x86とは何ですか?なぜbinフォルダーに以前のようにDebugしかないのですか?


2
すべてを再構築してみましたか?時々それは私にとって奇妙な依存関係の問題を修正します...
メゾイド09/10/30

回答:


246

プロジェクトの一部がx86専用に構築されているように聞こえますが、残りの部分は任意のCPU / x64向けに構築されています。これも私を噛んだ。x64(またはええと... IA64)を実行していますか?

プロジェクトのプロパティを確認し、すべてのCPUに対してすべてがビルドされていることを確認します。Visual Studioを使用している場合は、画面上部のツールバーにある「x86」または「Any CPU」メニュー(「Debug」/「Release」メニューの横)に移動してクリックすると、すべてを確認できます。 「構成マネージャー...」


1
また、Project-> Properties-> Build、またはDebug-> Properties-> Buildにもあります。VS2015バージョン14.0.25123.00 Update 2を更新しました。この更新は、5/10/16(昨日!)にリリースされました。プラットフォームターゲットがx64に設定されていることがわかりました。「Any CPU」に設定すると修正されました。
Michael D. O'Connor 2016年

179

64ビットサーバー上のIIS 7以降でサイトを実行しているときにこのエラーが発生した場合、32ビットのアセンブリがあり、アプリケーションプールの[32ビットアプリケーションを有効にする]オプションがFalseに設定されています。これをtrueに設定し、サイトを再起動して機能させます。


5
@ Mayhem50同じです。エラーが発生した場所によって異なります。Visual StudioとCassini Webサーバーを経由する場合は、Fraserの権利です。IIS7 +で発生する場合、Nicksの回答がおそらく最も可能性のある修正です。
カールハインリッヒハンケ

これは私にとって完璧な答えでした(x86のIIS6からx64のIIS 7にサイトを移動しました)
DrStalker

うん、これはそれをやった。x86のIIS6からx64のIIS 7にサイトを移動しました。どうもありがとうございます!
Lukas

40

恐ろしいBusiness Objects 4 for .Net SDK を使用しようとすると、このエラーが発生しました。

5つのBusinessObjects * .dllファイルが同梱されていますが、すべて64ビットです。

Webページを読み込むには、Tools \ Optionsをクリックして、VS2013でこの設定を変更する必要がありました。

ここに画像の説明を入力してください


そのオプションは私には存在しません。Visual Studio 2010でこの画面に表示される唯一のオプションは、「新しいファイルベースのWebサイトおよびプロジェクトにIIS Expressを使用する」です
Drew Chapin

このオプションはVS 2017 Professional
SKCS Kamalで

33

次に、inetmgrがアプリケーションプールに移動します->プールの詳細設定-> [32ビットアプリケーションを有効にする]オプションがtrueに設定されます。IISを再起動します。再び確かめる。!


次にこれ。私は自分のサイト用に新しいアプリプールを作成し、この設定を切り替えるのを忘れていました。
AlbatrossCafe

1
これで修正されました。私が変更する必要があった他の唯一のことは、パイプラインを統合に変更することでした。これにより、上記の修正が適用された後にエラーも発生しました。
AxleWack

7

IISで実行されているアプリケーション(Visual Studioでは「すべてのCPU」のビルドを使用して問題を修正しているため、VSからは実行されていません)のBadImageFormatExceptionは、次の原因で発生する可能性があります。

サイトは、x64のサーバーの1つであり、32ビットアプリケーションを有効にするためのアプリケーションプールのデフォルト設定はFalseでした。そしてあなたは32ビットのアセンブリを持っています

Visual Studioのレベルでは、修正は次のとおりです。

  1. プロジェクト設定の「ターゲットCPU」を「ANYCPU」に変更します

7

「32ビット優先」の設定を確認してください。私の場合、Visual Studio 2012ではこの設定がデフォルトでオンになっています。「32ビット優先」をオフにするまで、外部DLLから何かを使用しようとしても失敗しました。

ここに画像の説明を入力してください


4

CPUの代わりにx86互換性のために構築されているプロジェクトのいくつかでは、これは間違いなく問題です。推測しなければならないのですが、プロジェクト間の参照の一部は、プロジェクトの参照ではなく、bin \ debugフォルダーの一部にあるdllを参照している可能性があります。

プロジェクトが「Any CPU」ではなくx86用にコンパイルされると、dllはbin \ debugではなくbin \ x86 \ debugフォルダーに移動します(参照が参照されている場所です)。

ただし、いずれの場合も、プロジェクト間でプロジェクト参照を使用する必要があります。


0

IIS Expressを使用したビジュアルスタジオで作業中に、公開時に失敗した場合は、次のようにしてください。ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.