もくじ
ビルドの自動化関連
やりたいこと
複数のソリューション(sln)が絡むシステムをまとめて変更するときに、それぞれのslnをVisualStudioで立ち上げてメニューからビルド、とするのが面倒かつ間違いが発生しやすい。
batをダブルクリックしたら、決まった手順でビルドをしてくれるようにしたい。
MSBuildを使う
MSBuildは、VisualStudioがない環境でもアプリケーションをビルドできるツール。
MSBuildを使うと、VisualStduioのメニューから行っていたビルドを自動化できる。
※1つのプロジェクト、ソリューションだけをビルドするときはメニューからの操作で問題ないが、例えばライブラリ作成用のソリューションと、それを使う側のソリューションを別に作っている場合などは、各ソリューションから手でビルドすると大変なので、コマンドで一括ビルドできるようにしておくと便利。
前提
- 普段はVisualStudioで開発をしていて、ソリューションファイル(.sln)が存在している状況を想定。
処理の流れ
処理の流れとしては、
- 開発者用コマンドプロンプトを起動
- MSBuildでビルド実施
となる。以下、サンプル。
rem まず開発者用コマンドプロンプトを起動してから
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat"
rem MSBuildでビルドする
cd %~dp0
MSBuild %slnファイルのパス% /t:clean;rebuild /p:Configuration=Release;Platform="Any CPU"
if %ERRORLEVEL% neq 0 (
echo ErrorLevel:%ERRORLEVEL%
echo ビルド失敗
)
参考
MSBuildでコマンドラインからビルドする
http://sh-yoshida.hatenablog.com/entry/2017/05/27/012755
MS Build
https://docs.microsoft.com/ja-jp/visualstudio/msbuild/msbuild?view=vs-2019
MSBuild command-line reference
https://docs.microsoft.com/ja-jp/visualstudio/msbuild/msbuild-command-line-reference?view=vs-2019
=======
(おまけ)Nugetパッケージ復元の自動化
nugetも、コマンドで復元できる。
slnをnuget.exeに食わせてやれば、slnから必要なパッケージを読み取って、復元してくれる。
バージョン管理(svnなど)に外部のパッケージは入れたくないが、ビルドするときにはそのへんも復元したい、という場合に、上のMSBuildと組み合わせて、まずnuget復元してからビルド、とかすると便利。
やり方
nuget.exeを置いたフォルダで
cd %~dp0
.\NuGet restore <slnファイルのパス>