.NET アプリケーション開発のビルドに関する小技を集めました。
以下の内容の実現方法について取り扱います。
- ビルド時にファイルをコピーする
- ZIP ファイルを作成する
- ZIP ファイルの名前にバージョンを含める
- PowerShell でビルドする
- PowerShell でバージョンをインクリメントしてビルドする
ビルド時にファイルをコピーする
.NET アプリケーションをビルドすると、
プロジェクト フォルダーの下の bin\Debug や bin\Release に実行ファイルが出力されます。
このとき同時に、画像、動画、データなどのコンテンツ ファイルをコピーする方法を紹介します。
(サイズの小さい画像ファイルであればアセンブリ内のリソースとして埋め込んで使いますが。)
よくある方法としては、コンテンツ ファイルをプロジェクトに含めて、プロパティで [出力ディレクトリにコピー] の項目を設定します。
ただしこれだと、ファイルごとに設定しなければならないという欠点があります。
この欠点を回避するには、プロジェクトのビルド イベントを利用するとよいでしょう。
プロジェクトのプロパティを開き、[ビルド イベント] を選択します。
この画面で、ビルド時に実行するコマンド ラインを指定できます。
ファイルをコピーするには copy、フォルダーをコピーするには xcopy を利用します。
xcopy $(ProjectDir)Data $(TargetDir)Data /D/E/C/I/H/Y
$(ProjectDir) などの形式の文字列はマクロと呼ばれるもので、
ソリューションやプロジェクトにとっての特別な文字列を扱うことができます。
[ビルド後の編集] をクリックするとエディターが開きます。
ここではマクロの実際の値を確認しながら自動で挿入できます。
上記で使用した xcopy の各オプションの説明も挙げておきます。
- /D コピー元の日付がコピー先の日付より新しいファイルだけをコピーします。
- /E ディレクトリまたはサブディレクトリが空であってもコピーします。"/S /E" と同じ意味です。
- /C エラーが発生してもコピーを続けます。
- /I 指定されたコピー先が存在しない場合、コピー先をディレクトリとしてコピーします。
- /H 隠しファイルやシステム ファイルもコピーします。
- /Y 既存のファイルを上書きする前に確認のメッセージを表示しません。
このように設定してビルドを実行すれば、出力ディレクトリにコンテンツ ファイルがコピーされます。
なお、ビルド イベントでコマンド ラインが実行されるときの作業ディレクトリは、
$(TargetDir)、つまり bin\Debug や bin\Release などの出力ディレクトリです。
複数のコマンドを実行する場合など、相対パスにしたほうがわかりやすくなるときは、
cd $(ProjectDir)
xcopy Data $(OutDir)Data /D/E/C/I/H/Y
のように作業ディレクトリを設定するとよいでしょう。
次回は、ビルド時に ZIP ファイルを作成する方法についてです。
次回: .NET ビルド小技集 (2)
作成したサンプル
BuildSample (GitHub)
バージョン情報
Visual Studio 2013
2015年10月14日 00:40
[…] .NET ビルド小技集 (1) では、プロジェクトのビルド イベントを利用しました。 今回はビルド […]