web-dev-qa-db-ja.com

x64プラットフォームで実行するユニットテストを取得する方法

X64モードで実行する必要があるC#アプリケーションがあります。問題は、x64アプリケーションでメソッドを実行する単体テストを作成しようとすると、単体テストプロジェクトがビルドされないことです。ビルドしようとすると、次のエラーが表示されます。

C:.....\bin\x64\Debug .... UnitTests.dllの読み込みエラー:テストコンテナー 'C:.....\bin\x64\Debug .... UnitTests.dllを読み込むことができません'またはその依存関係の1つ。テストプロジェクトアセンブリを64ビットアセンブリとしてビルドすると、ロードできません。テストプロジェクトアセンブリをビルドするときに、プラットフォームに「Any CPU」を選択します。 64ビットプロセッサで64ビットモードでテストを実行するには、[ホスト]タブでテスト設定を変更して、32ビットプロセスでテストを実行する必要があります。エラーの詳細:ファイルまたはアセンブリ 'file:/// C:..... UnitTests\bin\x64\Debug .... UnitTests.dll'またはその依存関係の1つを読み込めませんでした。不正な形式のプログラムをロードしようとしました。

私はユニットテストをx64および任意のCPUに変更しようとしましたが、それでも実行できません。これに対する修正はありますか?

46
RJ.

他に言及していないので、Visual Studiosテストフレームワークを使用していると仮定しています。 VS2010では、テストホストを強制的にx64で実行できます。任意のCPUまたはx64としてアセンブリをビルドし、テストホストをx64に設定します。

http://msdn.Microsoft.com/en-us/library/ee782531.aspx

40
Robert Jeppesen

VS 2012以降では、Test Settings|Default Processor Architectureの下のTestメニューからデフォルトのターゲットプラットフォームを選択できます。

Visual Studio Test Settings

54
Sten Petrov

私は同じ問題、App.configファイルを追加しました

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
</configuration>
1

同様の問題がありました。 Visual Studio 2010(x64の下)には奇妙な問題があり、新しいプロジェクトを既存のソリューションに追加するとターゲットCPUが変更されます。すべての参照とCPUターゲットがx64であると確信していますか?

1
Svetlin Ralchev

関連するすべてのアセンブリをクリーンアップして再構築すると、このエラーを修正できます。 1つのファイルが予期せず破損している必要があります。

VSの改善点の1つは、不正な形式の例外が検出された場合、ファイル名を報告してください。その後、開発者はそのファイルのみを再構築できます。

0
Cary

テストプロジェクトのすべての参照をローカルに設定する必要があります(trueに設定)。私は以前にこの問題を抱えていましたが、あなたにとってもうまくいくことを願っています(Windows 7 64ビット+ VS2012を使用しています)

0
thienhaflash