Visual Studio : ビルドイベントで同じソリューション内の他プロジェクトの成果物をコピーする
プロジェクトのプロパティから「ビルド イベント」のパネルを開き、コマンドラインで xcopy を使います。
ビルド先のフォルダ名を取得するためのマクロや xcopy については以下のリンク先が参考になります。
よく使うプロパティは以下の通り。Dir 系のマクロの最後には \ が付いている事と、パスにはスペースが入っている事もあるので引数として使う場合は " で括った方が良い事は覚えておいた方が良いです。
プロパティのマクロ | 内容 |
---|---|
$(Configuration) | Debug や Release など |
$(SolutionDir) | ソリューションのディレクトリ |
$(ProjectPath) | プロジェクトのディレクトリ |
$(TargetDir) | ビルド成果物(.exeなど)の出力先 |
サンプル
ProjectA の成果物を、ビルド対象のプロジェクトの Res フォルダ以下にコピーするサンプルです。
コピー後、PDBファイルを削除しています。
- xcopy の /I はコピー先のフォルダを作成するオプション、/D は同名ファイルが存在する場合に更新日が新しいもののみコピーするオプション、/Y は確認なしで上書きするオプションです
- del の /s オプションは、指定したファイルを全てのサブディレクトリから削除するオプションです
- xcopy の /EXCLUDE でコピーするファイルを細かく指定できるので、ファイル数が多い場合やサイズの大きいファイルが有る場合は、そちらで対応してそもそもコピーしないようにしたほうが良いです
- ただ、除外ルールを指定するためのファイルが必要になるのは嬉しくないので、ファイル数が少なくサイズも小さい場合はコピーしてしまってから del で良いと思います
- xcopy の /EXCLUDE でコピーするファイルを細かく指定できるので、ファイル数が多い場合やサイズの大きいファイルが有る場合は、そちらで対応してそもそもコピーしないようにしたほうが良いです
xcopy /I /D /Y "$(SolutionDir)ProjectA\bin\$(Configuration)" "$(TargetDir)Res" cd "$(TargetDir)Res" del /s *.pdb