5

VS2010 C#大量のネイティブ .dll (商用 Java ランタイム) を参照するプロジェクトがあります。これらのファイルは、プロジェクトと共にコピーする必要があるため、プロジェクトでは「コンテンツ」ファイルとして参照されます。

これらのライブラリのコードは us​​ing で呼び出されPInvoke、アセンブリ参照はありません。

ソリューションをコンパイルするたびに、Visual Studio テスト フレームワークは参照されているすべての dll ファイルを読み込もうとし、ユニット テストを含む可能性のある .net アセンブリを見つけようとします。.net アセンブリがないため、次の例外がスローされます。

some.dll の読み込みエラー: テスト コンテナー 'e:\some.dll' またはその依存関係の 1 つを読み込めません。テスト プロジェクト アセンブリを 64 ビット アセンブリとしてビルドすると、ロードできません。テスト プロジェクト アセンブリをビルドするときは、プラットフォームに [任意の CPU] を選択します。64 ビット プロセッサで 64 ビット モードでテストを実行するには、[ホスト] タブでテスト設定を変更して、32 ビット プロセスでテストを実行する必要があります。エラーの詳細:ファイルまたはアセンブリ 'file:///e:\some.dll' またはその依存関係の 1 つを読み込めませんでした。モジュールには、アセンブリ マニフェストが含まれている必要がありました。

これにはかなりの時間がかかるため、これらのファイルをロードしないように Visual Studio に指示したいと思います。

Visual Studio にこれらのファイルの読み込みを停止するように指示するにはどうすればよいですか?

4

4 に答える 4

2

これが間違っている場合は修正してください。ソリューションのビルド時にバイナリをターゲット ディレクトリにコピーする必要があるため、VS ソリューションに P/Invoke ターゲット バイナリを含めています。これが必要なのは、VS ソリューションがビルドされるとすぐにプロジェクトがターゲット ディレクトリから実行されるためです。正しい?

多くの場合、VS パッケージ (デフォルトとサード パーティの両方) は、ソリューション コンテンツを賢く使おうとし、特定のトリガー (自分で封じ込めて制御するのは困難です) に従い、独自の方法でソリューションとプロジェクト コンテンツを読み込みます。この領域での戦いは、より単純な回避策 (以下) を採用するよりも ROI が低くなります。

VS のテスト パッケージにすべてのバイナリを読み込まないように指示する方法について、正式な回答を提供することはできませんが、そのようなバイナリをプロジェクトから「コンテンツ」として削除し、現在のソース管理に残すことをお勧めします。上記のバイナリをターゲットにコピーするビルド後のタスクを追加します。これにより、現在動作しているのと同じ結果が得られますが、これらのバイナリはテスト プローブの手の届かないところにあります。

于 2012-12-21T07:10:01.143 に答える
0

ソリューション名を右クリックし、[構成マネージャー] をクリックして、構成設定を確認する必要があります。構成マネージャーのポップアップ ウィンドウが開きます。プロジェクトが使用しているプラ​​ットフォームを確認するのではなく、任意の CPU を選択することをお勧めします。これが役立つことを願っています.試してみてください:)それはあなたが引用したようにあなたの例外が言っていることだからですありがとう

于 2012-12-20T10:17:24.313 に答える
0

この問題を再現しようとしたところ、テスト プロジェクトを !AnyCpu としてコンパイルするように設定したことが根本的な原因であることがわかりました。マネージド テスト コードにこれが必要な特定の理由はありますか?

したがって、これを変更しない限り、このメッセージは引き続き表示されます。

テスト プロジェクトでこの構成を引き続き使用する場合は、メッセージで提案されているように .testsettings ファイルを更新する必要があります。

于 2012-12-22T11:20:11.803 に答える
-1
于 2012-12-19T07:56:46.363 に答える