Presentation is loading. Please wait.

Presentation is loading. Please wait.

MSBuild 色々出来るよ 2011/04/02 お だ.

Similar presentations


Presentation on theme: "MSBuild 色々出来るよ 2011/04/02 お だ."— Presentation transcript:

1 MSBuild 色々出来るよ 2011/04/02 お だ

2 新日本コンピュータマネジメント という会社で開発者やってます。
自己紹介 織田 信亮 (おだ しんすけ) 新日本コンピュータマネジメント という会社で開発者やってます。 個人的に興味のある技術等を blog で取り上げてます。  SQL World/わんくま同盟/JGGUG 等の勉強会に参加してます

3 アジェンダ MSBuild ってなに? どんなことが出来るの? 拡張も出来るよ 力技で何でも出来る! まとめ

4 MSBuild ってなに?

5 Microsoft Build Engine (MSBuild)
Visual Studio 2005(.NET 2.0)から利用出来るようになったビルドプラットフォームです。 XML ベースのプロジェクトファイル(.*proj)を用いて設定します。

6 プロパティ (Property) 項目 (Item) タスク (Task) ターゲット (Target) MSBuild の主な構成要素

7 プロパティ 項目 ビルドを設定するためのキーと値のペア ビルド システムへの入力であり、通常はファイルを表します プロパティ/項目
繰り返し項目(ワイルドカードで、ファイルを指定)等、 プロパティより柔軟に使える値の格納場所 メタデータも設定可能(ビルド以外でも利用される)

8 タスク ビルド処理を実行するために使用される一連の実行可能コードです(コンパイルしたり、外部ツールを実行したり…) タスク
実際に動く最小単位の処理

9 ターゲット ターゲット タスクを特定の順序でグループ化し、プロジェクト ファイルの各セクションを、ビルド プロセスのエントリ ポイントとして公開する役割を果たします。 幾つかのタスクを取りまとめた MSBuild で実行する単位

10 デモ Windows Form プロジェクトファイルを見てみよう

11 MSBuild 4 からは、プロパティで関数の呼び出しが出来るようになっています。
おまけ MSBuild 4 からは、プロパティで関数の呼び出しが出来るようになっています。

12 どんなことが出来るの?

13 Csc MakeDir CallTarget Exec お馴染みC#コンパイラの呼び出し 名前の通りディレクトリの作成 ターゲットの呼び出し
標準のタスクを一部紹介 Csc お馴染みC#コンパイラの呼び出し MakeDir 名前の通りディレクトリの作成 CallTarget ターゲットの呼び出し Exec プログラムやコマンドを実行

14 デモ MSBuild で Hello World

15 一般的なシナリオ向けにアイテム、プロパティ、ターゲット、およびタスクが定義されたファイル
.Targets ファイル 一般的なシナリオ向けにアイテム、プロパティ、ターゲット、およびタスクが定義されたファイル .Targets ファイル 内容 Microsoft.Common.Targets VB プロジェクトと C# プロジェクトの標準ビルド プロセスにおける手順を定義 Microsoft.CSharp.Targets C# プロジェクトの標準ビルド プロセスにおける手順を定義

16 デモ どこでコンパイルしているか .Targets ファイルを追いかけてみる

17 1.C# プロジェクト作成 2.DefaultTarget="Build" となっている 3.Build という ターゲット は プロジェクトファイルに定義されていない 4.<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> を発見 5.%windir%\Microsoft.NET\Framework\バージョン番号 に targets ファイルがあるので見てみる 6.Build という ターゲット は CSharp.targets にも定義されていない 7.<Import Project="Microsoft.Common.targets" /> を発見 8.Common.targets ファイルを見てみる 9.Build ターゲット 発見(BeforeBuild, CoreBuild, AfterBuild の順で呼ばれる)   BeforeBuild、AfterBuild では何もしていない?!

18 10.CoreBuild ターゲット を見てみる
11.Compile ターゲット を見てみる 12.CoreCompile ターゲット を見てみる 13.Common.targets に CoreCompile が無い! CSharp.targets に戻って確認 14.CSC タスクを使ってますね。 15.プロジェクトファイルに、BeforeBuild, AfterBuild を定義する 16.ビルドを実行すると、BeforeBuild、AfterBuild が動いている事が確認できる。 17.CSharp.targets を Import する前に、BeforeBuild、AfterBuild を定義すると…実行されない

19 プロパティ/ターゲットは、最後に定義された物で上書きされる。
プロパティやターゲットは上書きされる プロパティ/ターゲットは、最後に定義された物で上書きされる。 プロジェクトファイルの CSharp.targets ファイル Import 以降にBuild ターゲットを再定義すると…

20 拡張も出来るよ

21 MSBuild Comminuty Tasks MSBuild Extension Pack
カスタムタスクの紹介 MSBuild Comminuty Tasks MSBuild Extension Pack

22 MSBuild.Build.Framework.ITask を実装 (Microsoft.Build.Framework.dll)
自前で用意する場合 MSBuild.Build.Framework.ITask を実装 (Microsoft.Build.Framework.dll) 既定の実装として、MSBuild.Build.Utilities.Task(Microsoft.Build.Utilities.V4.0.dll) が用意されているので、これを継承し、Execute メソッドを実装

23 デモ 自前で用意するタスクの実装/利用

24 力技で何でも出来る!

25 Exec タスクは、直接プロセスを呼び出す代わりに cmd.exe を呼び出します。
cmd.exe を呼び出すので、何でも出来る

26 Exec タスクで何でも出来る! NUnit の実行 PartCover の実行 Sandcastle の実行

27 ソース管理から最新ファイルを取得 ビルド テスト/レポートの作成 必要なファイルを ZIP 圧縮
色んなタスクを組み合わせると… ソース管理から最新ファイルを取得 ビルド テスト/レポートの作成 必要なファイルを ZIP 圧縮 Hudson(Jenkins)、CCNET、TFS 等の CI サーバーと組み合わせると便利! CI サーバーが無くても、 Windows のタスク等で昼休み/夜間に実行するとか

28 MSBuild は XML ベースで設定するビルドツール Visual Studio 上での設定も含んでる 知らなくても特に問題無い
まとめ MSBuild は XML ベースで設定するビルドツール Visual Studio 上での設定も含んでる 知らなくても特に問題無い チームに一人は知ってる人が居ると良いかも


Download ppt "MSBuild 色々出来るよ 2011/04/02 お だ."

Similar presentations


Ads by Google