9

マネージド コードをビルドするとき、Visual Studio は、参照されているマネージド プロジェクトの dll をビルド中のプロジェクトの出力フォルダーに正しく (そして再帰的に) コピーします。

ただし、これらの参照の 1 つがアンマネージド DLL に依存するマネージド DLL である場合、それらの対応するプロジェクトが同じソリューション内にあり、マネージド DLL の依存関係としてリストされていても、これらのアンマネージド DLL は出力フォルダーにコピーされません。

この問題は、すべてのプロジェクトで同じ出力フォルダーを使用することで解決できることを認識しています。ほとんどのプロジェクトで既にこれを行っていますが、単体テストの出力フォルダーを分けておくことを好みます。これにより、管理されていない依存関係を持つ管理された Dll を使用する単体テストで上記の問題が発生します。

私たちが現在使用しているソリューションは、必要な DLL をコピーするビルド前のイベントですが、マネージド DLL を使用するすべてのプロジェクトで繰り返す必要があるため、これは時間を浪費し、エラーが発生しやすくなります。

したがって、マネージ DLL をコピーすることを決定するたびに、常にマネージ DLL のアンマネージ依存関係をコピーする必要があることをビルド システムに理解させる方法があるかどうかを知りたいですか?

4

1 に答える 1

5

1 つの回避策は、マネージ DLL プロジェクトに別のノードを追加し、アンマネージ DLL に名前を付け、ビルド アクションを「なし」に設定し、出力ディレクトリへのコピーを「新しい場合はコピー」に設定することです。

編集: C++/CLR プロジェクトをビルドするには、これでうまくいくと思います:

ノードを追加し、ビルド ツールをCustom Build Toolに設定します。次に、[カスタム ビルド ステップ] ページで、コマンド$(InputPath) $(OutDir) にコピーし、出力$(OutDir)\$(InputFileName)に設定します。それはうまくいくはずです。

于 2009-12-30T13:22:32.210 に答える