LoginSignup
22
33

More than 1 year has passed since last update.

【VisualStudio】ビルドをバッチで行う

Last updated at Posted at 2019-04-25

もくじ

ビルドの自動化関連

やりたいこと

複数のソリューション(sln)が絡むシステムをまとめて変更するときに、それぞれのslnをVisualStudioで立ち上げてメニューからビルド、とするのが面倒かつ間違いが発生しやすい。
batをダブルクリックしたら、決まった手順でビルドをしてくれるようにしたい。

MSBuildを使う

MSBuildは、VisualStudioがない環境でもアプリケーションをビルドできるツール。
MSBuildを使うと、VisualStduioのメニューから行っていたビルドを自動化できる。

※1つのプロジェクト、ソリューションだけをビルドするときはメニューからの操作で問題ないが、例えばライブラリ作成用のソリューションと、それを使う側のソリューションを別に作っている場合などは、各ソリューションから手でビルドすると大変なので、コマンドで一括ビルドできるようにしておくと便利。

前提

  • 普段はVisualStudioで開発をしていて、ソリューションファイル(.sln)が存在している状況を想定。

処理の流れ

処理の流れとしては、

  • 開発者用コマンドプロンプトを起動
  • MSBuildでビルド実施

となる。以下、サンプル。

build.bat
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を置いたフォルダで

a.bat
cd %~dp0
.\NuGet restore <slnファイルのパス>
22
33
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
22
33