1. はじめに
- C#のクラスライブラリで作成したDLLを別プロジェクトへコピーしたい
- プロジェクトのビルド後のイベントで自動的にコピーしたい
2. 実行環境
- 統合開発環境: Visual Studio 2022
- 下記フォルダ構成のClassLibraryプロジェクトで作成したDLLを、Clientプロジェクトへコピーする
├─class-library : クラスライブラリのGitリポジトリー
│ └─ClassLibrary : クラスライブラリのプロジェクト
│ ├─bin
│ │ └─Debug
│ │ └─net6.0-windows ← コピー元
│ └─Util
└─client : クライアントのGitリポジトリー
└─Client : クラスライブラリのプロジェクト
├─bin
│ └─Debug
│ └─net6.0-windows ← コピー先
└─View
3. プロジェクトのビルド設定
- プロジェクトを右クリックして、
プロパティ
を選択する -
ビルド
>イベント
>ビルド後のイベント
に下記を追記する
xcopy /s /y /d $(ProjectDir)bin\$(Configuration)\net6.0-windows\* $(ProjectDir)..\..\client\Client\bin\$(Configuration)\net6.0-windows
マクロ | 説明 |
---|---|
$(ProjectDir) | プロジェクトのディレクトリ (ドライブとパスで定義)。最後に円記号 () が含まれます |
$(ConfigurationName) | 現在のプロジェクト構成の名前 ("Debug" など) |
-
ビルド後のイベントをいつ実行するか
にビルドに成功したとき
を選択する
4. xcopyコマンド
- 今回ビルド後のイベントで使用した部分を中心にコマンドの内容を記載する
4.1. コマンド説明
ディレクトリごとファイルをコピーする。隠し属性やシステム属性ファイルなどをそのままコピーすることが可能。ワイルドカードの使用もできる。
4.2. コマンド形式
xcopy <Source> [<Destination>] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d [:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:FileName1[+[FileName2]][+[FileName3]]] [{/y | /-y}] [/z] [/b] [/j] [/compress]
4.3 コマンドオプション
オプション | 説明 |
---|---|
/s | 空の場合を除き、ディレクトリとサブディレクトリをコピーします |
/y | 既存の宛先ファイルを上書きするかどうかを確認するプロンプトを抑制します |
/d | 既存の "宛先" ファイルよりも新しいすべての "ソース" ファイルをコピーします |
5. 動作確認
- ビルドを実行する毎に自動で別プロジェクトへDLLがコピーされることを確認した
6. 参考文献
https://learn.microsoft.com/ja-jp/visualstudio/ide/reference/pre-build-event-post-build-event-command-line-dialog-box?view=vs-2022
https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/xcopy