web-dev-qa-db-ja.com

System.BadImageFormatException:ファイルまたはアセンブリを読み込めませんでした…installutil.exeでサービスをインストールしようとすると、形式が正しくありません

私は duplicate 質問をするつもりですが、私のシナリオはまったく異なります。プログラムのnunitツールを使用してユニットテストを行うと、NUnitでこのエラーが発生するためです。

"NewTest.testtest(TestFixtureSetUp):SetUp:System.BadImageFormatException:could not load file or Assembly 'AUTO_REPAIR、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null' or one of the dependencies of。不正な形式のプログラム。」

このエラーがこのツールで発生しているのはなぜですか?私はプロジェクトやテストケースでエラーが発生しないと確信しています。

私を助けてください。

これはこのエラーの画像です

enter image description here

15
aami

このエラーを解決するには2つの方法があります

  1. Visual Studioでプロジェクトのプラットフォームターゲットをx86に設定します(ソリューションを右クリックしてプロパティに移動すると、ビルドオプションが表示され、ビルドをクリックするとプラットフォームターゲットが表示されます)。プラットフォームターゲットをx86に設定したら、nunitを使用して単体テストを実行してみてください。

または

  1. 単にnunitフォルダーのbinフォルダーでnunit-x86.exeを見つけて、このexeファイルを実行するだけで、再び例外は表示されなくなります:)
29
Ammar Asjad

BadFormatExceptionは、64ビットプロセスでx86アセンブリをロードしようとした場合、またはその逆の場合に発生します。 NUnitのドキュメント( http://www.nunit.org/index.php?p=nunit-gui&r=2.4.2 )に従って、デフォルトのランナーはAnyCPUとしてコンパイルされます。これは、64ビットプロセスが64ビットマシン。アセンブリまたはその依存関係の1つがx86用に直接コンパイルされている場合、この例外が発生します。

Nunit-x86またはNunit-console-x86.exeに切り替えると、すべてが正しく読み込まれます。

14
bryanbcook

アンマーのコメントを補足する。 Configuration Managerがアクティブなプラットフォームであると言っていることだけに依存しないでください。プロジェクトのプロパティに移動し、そこでも確認します。これが、プロジェクトの実際のプラットフォームです。

enter image description here

12
viggity