252

ビルドが成功したら、出力ディレクトリの内容を同じ「ベース」フォルダーの下の別の場所にコピーしたいと考えています。この親フォルダーは相対的な部分であり、ソース管理の設定によって異なる場合があります。

利用可能なマクロ値のいくつかをリストしました...

$(SolutionDir) = D:\GlobalDir\Version\AppName \Solution1\build

$(ProjectDir) = D:\GlobalDir\Version\AppName \Solution1\Version\ProjectA\

出力ディレクトリの内容を次のフォルダーにコピーしたい:

D:\GlobalDir\Version\AppName \Solution2\Project\Dependency

ベースの場所「D:\GlobalDir\Version\AppName」は、上記のマクロのいずれかから取得する必要があります。ただし、親の場所だけをリストするマクロ値はありません。

ビルド後のコピー コマンドのベース ロケーションのみを抽出するにはどうすればよいですか?

4

6 に答える 6

326

プロジェクトのビルド後のイベント コマンド ラインに入力する内容は次のとおりです。

copy /Y "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)lib\$(ProjectName).dll"

編集:または、ターゲット名がプロジェクト名と異なる場合。

copy /Y "$(TargetDir)$(TargetName).dll" "$(SolutionDir)lib\$(TargetName).dll"
于 2010-09-15T15:19:13.230 に答える
207

TargetDir やその他のマクロが適切な場所を指していない場合は、「..」ディレクトリを使用してフォルダ階層をさかのぼります。

すなわち。$(SolutionDir)\..\..ベースディレクトリを取得するために使用します。


すべてのマクロのリストについては、こちらを参照してください。

http://msdn.microsoft.com/en-us/library/c02as0cs.aspx

于 2009-05-07T12:10:38.167 に答える
43

あなたは試すことができます:

$(SolutionDir)..\..\
于 2009-05-07T12:09:36.750 に答える
4

msbuild を直接使用しても意味がありませんか? すべてのビルドでこれを行っている場合、最後に msbuild タスクを追加できますか? Visual Studio IDE に表示されていない別のマクロ値が見つからないかどうかを確認したい場合は、msbuild オプションを診断に切り替えると、使用できるすべての変数が表示されます。現在の値と同様です。

Visual Studio でこれをオンにするには、[ツール]/[オプション] に移動し、ツリー ビューを下にスクロールして [プロジェクトとソリューション] というセクションを表示し、それを展開して [ビルドと実行] をクリックします。右側に、ビルド出力の詳細度を指定するドロップ ダウンがあります。 、それを診断に設定すると、使用できる他のマクロ値が表示されます。

あなたがどのレベルに進みたいのか、ビルドをどの程度複雑にしたいのか、私にはよくわからないので、これでいくらかのアイデアが得られるかもしれません. 私は最近、ビルドの一部として SQL コードを実行するビルド スクリプトを作成しています。さらにヘルプやサンプル ビルド スクリプトが必要な場合はお知らせください。ただし、ビルドの最後に実行したい小さなプロセスである場合は、完全な msbuild スクリプトを実行するのは少しやり過ぎです。 .

リーハンに役立つことを願っています

于 2009-05-07T12:44:01.473 に答える