Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ms build 触ってみよう

2,444 views

Published on

めとべや大阪#31
https://roommetroosaka.doorkeeper.jp/events/27399

Published in: Technology

Ms build 触ってみよう

  1. 1. MSBuild 触ってみよう めとべや大阪#31 大阪 2015/07/25 SQLWorld お だ
  2. 2. 自己紹介 織田 信亮(おだ しんすけ) 大阪で開発者しています SQLWorld の代表です http://odashinsuke.hatenablog.com/ Twitter:@shinsukeoda
  3. 3. アジェンダ MSBuild 知ってますか? ちょっとだけ詳しく 使ってみた!
  4. 4. アジェンダ MSBuild 知ってますか? ちょっとだけ詳しく 使ってみた!
  5. 5. MSBuild 知ってますか? Microsoft Build Engine XML ベースで記述するビルドツール Visual Studio で使う.*proj ファイルなら 知ってる? (.csproj/.vbproj 等) それが MSBuild プロジェクトファイル! ※Visual Studio 2005 以降
  6. 6. インストールした憶えないけど? 昔は .NET Framework に同梱 現在は Visual Studio に同梱 単体でもインストール可能に Micorsoft Build Tools 2013 http://www.microsoft.com/ja-jp/download/details.aspx?id=40760
  7. 7. Visual Studio 2005~と仲良し! プロジェクトファイル = MSBuild プロ ジェクトファイル Visual Studio でビルドすると、MSBuild を呼び出してビルドしている MSBuild プロジェクトファイルは Visual Studio で使うメタデータも持っている ビルドでは使わないが Visual Studio の機 能で利用するデータ
  8. 8. Visual Studio で MSBuild 書く .proj ファイルは XML エディターで メニュー -> XML -> スキーマ -> 追加 Visual Studio インストールフォルダ XmlSchemas1041MSBuild 以下 の .xsd を選択
  9. 9. DEMO Hello ~
  10. 10. Task 命令の単位 メッセージ出力 ファイルコピー 外部ツールの実行 … 後述の Target 内で指定可能
  11. 11. Target Task を特定の順序でグループ化したもの MSBuild は Target 単位での実行 エントリポイント Target間の依存関係/前後関係の指定も可 一般的なものは、提供済みの .targets ファイルにまとめられてる
  12. 12. Property 名前と値のペア Task に値を渡したり、条件評価等で使う
  13. 13. DEMO .targets を作成する
  14. 14. おさらい Task 命令の単位 Target 実行する単位でTask の実行順序をまとめた もの Property 名前と値のペア
  15. 15. アジェンダ MSBuild 知ってますか? ちょっとだけ詳しく 使ってみた!
  16. 16. Task 標準で用意されている Task https://msdn.microsoft.com/ja-jp/library/7z253716.aspx 拡張タスク Task を実装した DLL を呼び出す インライン Task
  17. 17. Task (属性) Condition Task を実行するかどうかの条件式 Condition=“’$(CONFIG)’==‘DEBUG’” ContinueOnError エラーがあっても後続を実行するかどうか .NET 4.5より前は true/false WarnAndContinue:警告扱いで続行 (true) ErrorAndContinue:エラー扱いで続行 ErrorAndStop:エラー扱いで終了 (false) 既定値は ErrorAndStop or false
  18. 18. Target 標準で用意されている Target Microsoft.Common.targets Microsoft.CSharp.targets Microsoft.VisualBasic.targets … MSBuild フォルダを漁ると色々あります 同じ名前の Target は後勝ち(Property の 箇所で詳細解説)
  19. 19. Target (属性 - 依存関係/前後処理) DependsOnTargets Target 実行前に指定された Target を実行 <Target Name=“Package” DependsOnTargets=“Clean;Build” > BeforeTargets/AfterTargets Target の前後に指定された Target を実行 <Target Name=“bar” BeforeTargets=“foo” AfterTargets=“baz”> 同じ Target は1ビルド中に1回だけしか 実行されない
  20. 20. Target (エラー処理) Task の ContinueOnError が ErrorAndStop / false の場合は、 OnError で指定した Target を実行 TaskOne 、TaskTwo どちらでエラーが出ても OtherTarget が実行される。 エラーが出ない場合は、OtherTarget は実行されない <Target Name="ThisTarget"> <TaskOne ContinueOnError="ErrorAndStop“ />" <TaskTwo /> <OnError ExecuteTargets="OtherTarget" /> </Target>
  21. 21. Property 同じ名前の Property は後で指定した物が 優先される .targets で指定されている場合も同様 Import の位置が大事! <PropertyGroup> <Param>Default</Param> </PropertyGroup> <Target Name="Hello"> <Message Text="Hello $(Param) さん" /> </Target> <PropertyGroup> <Param>Default2</Param> </PropertyGroup> 後ろで指定されている Default2 が出力される
  22. 22. Property プロパティ関数 基本的なデータ型/型変換/ファイルパス/正 規表現 等の static なメソッド/プロパティ の呼び出しサポート <PropertyGroup> <Today> $([System.DateTime]::Now.ToString("yyyy/MM/dd HH:mm:ss")) </Today> </PropertyGroup> <Target Name="HelloWorld"> <Message Text="$(Today) Hello MSBuild World!" /> </Target>
  23. 23. Item ビルドの入力、通常はファイルを表す Compile/Reference/EmbeddedResource /Content/None… メタデータを持つ SubType/DependentUpon… Visual Studio のソリューションエクスプ ローラー でよく見るやつ
  24. 24. DEMO VS でビルドしても必ずエラーになる
  25. 25. アジェンダ MSBuild 知ってますか? ちょっとだけ詳しく 使ってみた!
  26. 26. Report 用の プロジェクトファイル コード解析/テスト/カバレッジを取る用の プロジェクトファイルを作成する FxCop OpenCover Nunit http://odashinsuke.hatenablog.com/entry/20 120511/1336740574
  27. 27. DEMO SQL ファイルのコード規約検証
  28. 28. ScriptDom T-SQL のパーサー/ジェネレーター MS が .NET のライブラリとして提供 インストール SQL Server Feature Pack NuGet
  29. 29. 各種ツールとか MSBuild Extension Pack カスタムタスク等の提供 http://www.msbuildextensionpack.com/ MSBuild Explorer プロジェクトファイルの可視化 http://www.msbuildexplorer.com/ MSBuild デバッグ http://blogs.msdn.com/b/visualstudio/archive/2010/07/ 06/debugging-msbuild-script-with-visual-studio.aspx
  30. 30. まとめ MSBuild は XML ベースで設定するビルド ツール Visual Studio での設定も込み 知らなくても特に問題無い けど、知ってると役に立つことも

×