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

Slides:



Advertisements
Similar presentations
年度 J2EE II 稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴. 2 この講義の位置づけ 3年前期の「データベース論 (J2EE I) 」に続く講義。 「データベース論」の講義内容を理解 していることが前提。
Advertisements

オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
IIS 4.0で開発をするコツ Webアプリケーション構築.
PHP AV(Audio Visual) 拡張 クライアントサイド PHP アプリケーションPHP
Windows HPC Server を使ってみる
D&UNITE 株式会社 代表取締役 株式会社 T-Planning 取締役 Microsoft MVP for ASP.NET/IIS
PROCESS 14:一般情報(2) InstallShieldLecture
PHP AV(Audio Visual) 拡張 PHP asアプリケーション
2014年度 プログラミングⅡ ~ Cプログラミングやってみよう ~.
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
東京工科大学 コンピュータサイエンス学部 亀田弘之
2013年度 プログラミングⅡ ~ Cプログラミングやってみよう ~.
TMenu メニューバーを用いた操作のための コンポーネント.
S2Container.NET, S2Dao.NET コミッタ 藤井 宏明
PCの情報を得る - 「システム情報」 ①「スタート」→「すべてのプログラム」→「アクセサリ」→「システム ツール」→「システム情報」とクリックする。 ②左欄の項目を選択すると、右欄に情報が表示される。
BREWを学ぶ 情報工学科1組 石原 第5週目 Microsoft Visual Studio .NET 2003を使って
ゲームプログラミング講習 第1章 DXライブラリ入門
2008/03/01 D-BOF k.inaba はじめての initial D 2008/03/01 D-BOF k.inaba
CODE::BLOCKSで 無料で簡単 Windowsアプリ開発
WebサービスII (第10回) 2007年11月28日 植田龍男.
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
Mavenによる プロジェクト管理 近畿大学理工学部 情報学科3年  小野実.
WSDL と JAX-RPC 年10月13日 Webサービス II (第3回) WSDL と JAX-RPC 年10月13日.
Visual Studio 2005を使ったテスト.
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
ASP.NET開発標準化を考えてみよう! わんくま同盟 東京勉強会# /03/15 mxb & 片桐継.
ASP.NET開発標準化を考えてみよう! わんくま同盟 東京勉強会# /03/15 mxb & 片桐継.
RAD Studio 14/09/27 TEffectを使った綺麗なForm
Visual Studio LightSwitchの概要
T-SQL の Parse と Generate
初年次セミナー 第2回 文字の出力.
WSDL と JAX-RPC 年10月20日 Webサービス II (第4回) WSDL と JAX-RPC 年10月20日.
TA 高田正法 B10 CPUを作る 2日目 SPIMのコンパイル TA 高田正法
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
RMI ソフトウェア特論 第6回 /
2016年度秋期 成果発表会 2016年11月25日 大阪開発センター 技術一部 畑中 龍樹.
コンパイラの解析 (2) GCJのデータ構造 - 1.
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
Office IME 2010 を使う.
MVP for VB が語る C# 入門 初音 玲.
MVP for VB が語る C# 入門 初音 玲.
Windows Azure (CTP) 触ってみた
Windows PowerShell Cmdlet
R流・C#マルチスレッドの復讐 2009年05月16日 R・田中一郎
「OSで儲けない」 Microsoftの新戦略
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
実行時情報に基づく OSカーネルのコンフィグ最小化
Jakarta Struts (2) ソフトウェア特論 第11回.
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
JXTA Shell (1) P2P特論 (ソフトウェア特論) 第4回 /
Windows Azure (CTP) 触ってみた
Visual Studio 2005の使用方法 新入生セミナー 
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
2013年度 プログラミングⅡ ~ はじめてのプログラミング ~.
2017年度 プログラミングⅡ ~ はじめてのプログラミング ~.
2014年度 プログラミングⅡ ~ はじめてのプログラミング ~.
B演習(言語処理系演習)第2回 田浦.
高度プログラミング演習 (01).
vc-3. ダンプリスト,配列 (Visual Studio C++ の実用知識を学ぶシリーズ)
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
ゲームのタスクシステム 導入編 レベル2くまー By keychan.
vc-3. ダンプリスト,配列 (Visual Studio C++ の実用知識を学ぶシリーズ)
ネットワークプロトコル.
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
Microsoft Office Project Server 2007
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習Ⅱ インタラクティブゲーム制作
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

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

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

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

MSBuild ってなに?

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

プロパティ (Property) 項目 (Item) タスク (Task) ターゲット (Target) MSBuild の主な構成要素 http://msdn.microsoft.com/ja-jp/library/dd393574.aspx

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

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

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

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

MSBuild 4 からは、プロパティで関数の呼び出しが出来るようになっています。 おまけ MSBuild 4 からは、プロパティで関数の呼び出しが出来るようになっています。 http://msdn.microsoft.com/ja-jp/library/dd633440.aspx

どんなことが出来るの?

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

デモ MSBuild で Hello World

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

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

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 では何もしていない?!

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 を定義すると…実行されない

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

拡張も出来るよ

MSBuild Comminuty Tasks MSBuild Extension Pack カスタムタスクの紹介 MSBuild Comminuty Tasks http://msbuildtasks.tigris.org/ MSBuild Extension Pack http://msbuildextensionpack.codeplex.com/

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 メソッドを実装

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

力技で何でも出来る!

Exec タスクは、直接プロセスを呼び出す代わりに cmd.exe を呼び出します。 http://msdn.microsoft.com/ja-jp/library/x8zx72cd.aspx cmd.exe を呼び出すので、何でも出来る

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

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

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