MSBuildでコマンドラインからビルドする
概要
いつもVisual Studioからビルドしてましたが、コマンドラインでMSBuild.exeを使ってビルドしてみます。あっ、今年はde:code行けなかったで(´;ω;`)スンスン
環境
- Windos 10
- Visual Studio Community 2017
MSBuild
Visual Studio Community 2017をデフォルトでインストールしたらexeは以下にありました。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe
構文
MSBuild.exe [Switches] [ProjectFile]
パスを通すか、フルパスでMSBuildを実行。引数にはビルドするソリューションでok。
> MSBuild C:\src\workspace\ClassLibrary1\ClassLibrary1.sln
詳細なオプションは以下。オプションじゃなくてスイッチか。
MSBuild Command-Line Reference
いくつか頻繁に使いそうなスイッチをつけて実行してみるぞぃ。
長くなるのでパスは省略します。
ソリューションをクリーンしてリビルド
/target(/t)スイッチにターゲットを指定します。いつもVisualStudioでやってるやつや。
> MSBuild ClassLibrary1.sln /t:clean;rebuild
64bit Debugビルド
/property:(/p)スイッチにConfigurationとPlatformを指定します。Releaseやx86を渡したりするんですね。
> MSBuild ClassLibrary1.sln /t:build /p:Configuration=Debug;Platform="x64"
「Microsoftのすべての規則」でコード分析
/property:(/p)スイッチにRunCodeAnalysisとCodeAnalysisRuleSetを指定します。ルールセットにファイルのパスを渡すとクソ長くなりますのでよろしくお願いします。
> MSBuild ClassLibrary1.sln /t:build /p:RunCodeAnalysis=true;CodeAnalysisRuleSet="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Team Tools\Static Analysis Tools\Rule Sets\AllRules.ruleset"
ビルドログをファイルに出力
/verbosity:(/v)スイッチにdiagnostic(diag)を指定すると詳細なログがもりもり吐かれます。
/fileLogger(/fl)スイッチはカレントにmsbuild.logという名前でビルドログを出力してくれるやつ。かわいい。
> MSBuild ClassLibrary1.sln /t:build /v:diag /fl
これらを踏まえてスイッチをマシマシで流してみましょう。