LoginSignup
0
1

More than 1 year has passed since last update.

C#でクラスライブラリのDLLをビルド後イベントで自動配布する

Last updated at Posted at 2023-02-01

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1