10

ソリューションに A と B という 2 つのアンマネージ C++ DLL があり、A には B への参照があります。B.dll を A のアプリケーション ディレクトリにコピーしたいと考えています。A の参照で [ローカルにコピー] をクリックすると、プロジェクト プロパティの [Framework and References] タブでは、true に設定されているように見えますが、[適用] をクリックすると値が false に戻ります。ここで何か考えはありますか?

4

3 に答える 3

1

しばらく経ちましたが、この問題に遭遇したところ、次の接続ページを見つけました。

https://connect.microsoft.com/VisualStudio/feedback/details/766064/visual-studio-2012-copy-local-cannot-be-set-via-the-property-pages

既知の問題のようです。プロジェクト ファイルを編集することで回避できます。

于 2014-09-19T23:06:46.023 に答える
1

@HoopSomuah 接続のバグを回避し、[ローカルのコピー] 設定を固定しても、プロジェクトの B への参照に設定したフラグに関係なく、Visual Studio は依存ライブラリまたは dll を A のターゲット フォルダーにコピーしません。 A.

Visual Studio 2015 でのアンマネージ リファレンスの処理は依然としてうまくいかず、2017 も同様に悪いと確信しています。

@JasonFry @HansPassant が指摘したように、ビルド後のイベントをプロジェクト A に追加して、B.dll を A.dll と同じフォルダーにコピーする必要があります。

Visual Studio には、プロジェクト A から B.dll へのパスを簡単に取得する方法が用意されていないため、プロジェクト B にそのパスをテキスト ファイルに書き込み、プロジェクト A にそのテキスト ファイルからパスを読み取らせ、B をコピーさせることができます。 .dll を A.dll と同じフォルダーに入れます。

B のプロジェクト プロパティを開き、これをビルド後のイベントとして追加します。

echo $(TargetPath)>$(SolutionDir)References.txt

A のプロジェクト プロパティで、ビルド後のイベントとして追加します。

for /f %%f in ($(SolutionDir)References.txt) do xcopy /y %%f $(TargetDir)

A の出力フォルダーにもコピーする必要がある 3 番目のプロジェクト C.dll がある場合は、同様のビルド後のイベントを C のプロジェクト プロパティに追加します (> ではなく >> に注意してください上書きはなく、テキスト ファイルに追加されます)。それ):

echo $(TargetPath)>>$(SolutionDir)References.txt
于 2017-04-29T14:53:34.277 に答える
0

私はしばらく前にこの問題を抱えていました。基本的に、これは true であるため、ファイルをコピーし、自身を false に設定して再コピーしないようにします。

于 2014-08-27T01:10:32.647 に答える