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

Mais conteúdo relacionado

Mais procurados

今日から使える! HTML/CSS/JSの シンプルテクニック15選
今日から使える! HTML/CSS/JSの シンプルテクニック15選今日から使える! HTML/CSS/JSの シンプルテクニック15選
今日から使える! HTML/CSS/JSの シンプルテクニック15選
Horiguchi Seito
 

Mais procurados (20)

Web制作的SendGridのススメ SendGridで色々やってみた話
Web制作的SendGridのススメ SendGridで色々やってみた話Web制作的SendGridのススメ SendGridで色々やってみた話
Web制作的SendGridのススメ SendGridで色々やってみた話
 
Css Architecture for the future 未来を見据えるCSS設計
Css Architecture for the future 未来を見据えるCSS設計Css Architecture for the future 未来を見据えるCSS設計
Css Architecture for the future 未来を見据えるCSS設計
 
AngularJS2でつまづいたこと
AngularJS2でつまづいたことAngularJS2でつまづいたこと
AngularJS2でつまづいたこと
 
Webデザイナーの私がMicrosoft Azureを使うようになったワケ
Webデザイナーの私がMicrosoft Azureを使うようになったワケWebデザイナーの私がMicrosoft Azureを使うようになったワケ
Webデザイナーの私がMicrosoft Azureを使うようになったワケ
 
TypeScript による今風の web アプリ開発
TypeScript による今風の web アプリ開発TypeScript による今風の web アプリ開発
TypeScript による今風の web アプリ開発
 
Visual studio extensibility
Visual studio extensibilityVisual studio extensibility
Visual studio extensibility
 
Microsoft Azure WebAppsで ECサイトを構築してみた話 ~EC-CUBE3で試してみました~
Microsoft Azure WebAppsでECサイトを構築してみた話 ~EC-CUBE3で試してみました~Microsoft Azure WebAppsでECサイトを構築してみた話 ~EC-CUBE3で試してみました~
Microsoft Azure WebAppsで ECサイトを構築してみた話 ~EC-CUBE3で試してみました~
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
 
ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)
 
グローバルなCSSコンポーネントを避ける
グローバルなCSSコンポーネントを避けるグローバルなCSSコンポーネントを避ける
グローバルなCSSコンポーネントを避ける
 
AngularJSを浅めに紹介します
AngularJSを浅めに紹介しますAngularJSを浅めに紹介します
AngularJSを浅めに紹介します
 
angular1脳で見るangular2
angular1脳で見るangular2angular1脳で見るangular2
angular1脳で見るangular2
 
コンポーネント指向と余白の設計
コンポーネント指向と余白の設計コンポーネント指向と余白の設計
コンポーネント指向と余白の設計
 
今日から使える! HTML/CSS/JSの シンプルテクニック15選
今日から使える! HTML/CSS/JSの シンプルテクニック15選今日から使える! HTML/CSS/JSの シンプルテクニック15選
今日から使える! HTML/CSS/JSの シンプルテクニック15選
 
Alt01-LT
Alt01-LTAlt01-LT
Alt01-LT
 
Vscodemeetup6
Vscodemeetup6Vscodemeetup6
Vscodemeetup6
 
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
 
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
 
Introduction to application architecture on asp.net mvc
Introduction to application architecture on asp.net mvcIntroduction to application architecture on asp.net mvc
Introduction to application architecture on asp.net mvc
 
ノンコーディングでLINE BOTを作ってみた話
ノンコーディングでLINE BOTを作ってみた話ノンコーディングでLINE BOTを作ってみた話
ノンコーディングでLINE BOTを作ってみた話
 

Destaque

Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Atsushi Kambara
 

Destaque (9)

NuGetの社内利用のススメ
NuGetの社内利用のススメNuGetの社内利用のススメ
NuGetの社内利用のススメ
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
 
グローバル化はなぜ日時処理問題を引き起こすのか
グローバル化はなぜ日時処理問題を引き起こすのかグローバル化はなぜ日時処理問題を引き起こすのか
グローバル化はなぜ日時処理問題を引き起こすのか
 
Windowsでの自動化の手段
Windowsでの自動化の手段Windowsでの自動化の手段
Windowsでの自動化の手段
 
Implementing Domain-Driven Design: Part 1
Implementing Domain-Driven Design: Part 1Implementing Domain-Driven Design: Part 1
Implementing Domain-Driven Design: Part 1
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
業務アプリケーション開発を支える.NET技術 #ngtnet
業務アプリケーション開発を支える.NET技術 #ngtnet業務アプリケーション開発を支える.NET技術 #ngtnet
業務アプリケーション開発を支える.NET技術 #ngtnet
 
2016年を振り返って
2016年を振り返って2016年を振り返って
2016年を振り返って
 
Latest Status of Identity Federation
Latest Status of Identity FederationLatest Status of Identity Federation
Latest Status of Identity Federation
 

Semelhante a Ms build 触ってみよう

ビルド時にSqlファイルを検証しよう
ビルド時にSqlファイルを検証しようビルド時にSqlファイルを検証しよう
ビルド時にSqlファイルを検証しよう
Oda Shinsuke
 
Blendの便利機能振り返り
Blendの便利機能振り返りBlendの便利機能振り返り
Blendの便利機能振り返り
一希 大田
 
効率10倍UP 秀丸IDE化法
効率10倍UP 秀丸IDE化法効率10倍UP 秀丸IDE化法
効率10倍UP 秀丸IDE化法
将 高野
 
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
Satoshi Noda
 

Semelhante a Ms build 触ってみよう (20)

Stack2017 自動化困難な状況での活動方法
Stack2017 自動化困難な状況での活動方法Stack2017 自動化困難な状況での活動方法
Stack2017 自動化困難な状況での活動方法
 
Infragistics Web Day 2017 - 継続的な開発を支える テスト自動化技術
Infragistics Web Day 2017 - 継続的な開発を支える テスト自動化技術Infragistics Web Day 2017 - 継続的な開発を支える テスト自動化技術
Infragistics Web Day 2017 - 継続的な開発を支える テスト自動化技術
 
新しい Visual Studio & .NET と新時代のアーキテクチャ
新しい Visual Studio & .NET と新時代のアーキテクチャ新しい Visual Studio & .NET と新時代のアーキテクチャ
新しい Visual Studio & .NET と新時代のアーキテクチャ
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 
インフラエンジニアに送る Visual Studio Code ~Azure 編~
インフラエンジニアに送る Visual Studio Code ~Azure 編~インフラエンジニアに送る Visual Studio Code ~Azure 編~
インフラエンジニアに送る Visual Studio Code ~Azure 編~
 
ビルド時にSqlファイルを検証しよう
ビルド時にSqlファイルを検証しようビルド時にSqlファイルを検証しよう
ビルド時にSqlファイルを検証しよう
 
Blendの便利機能振り返り
Blendの便利機能振り返りBlendの便利機能振り返り
Blendの便利機能振り返り
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 
効率10倍UP 秀丸IDE化法
効率10倍UP 秀丸IDE化法効率10倍UP 秀丸IDE化法
効率10倍UP 秀丸IDE化法
 
ASP.NET MVC で Bootstrap
ASP.NET MVC で BootstrapASP.NET MVC で Bootstrap
ASP.NET MVC で Bootstrap
 
200813 fgdc mandai
200813 fgdc mandai200813 fgdc mandai
200813 fgdc mandai
 
TypeScript補完計画 for Sublime Text 2
TypeScript補完計画 for Sublime Text 2TypeScript補完計画 for Sublime Text 2
TypeScript補完計画 for Sublime Text 2
 
SB TechNight #5 ~AVD構築のアレコレ~
SB TechNight #5 ~AVD構築のアレコレ~SB TechNight #5 ~AVD構築のアレコレ~
SB TechNight #5 ~AVD構築のアレコレ~
 
TypeScript and Visual Studio Code
TypeScript and Visual Studio Code TypeScript and Visual Studio Code
TypeScript and Visual Studio Code
 
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
 
Visual Studio ~ 過去、現在、そして未来
Visual Studio ~ 過去、現在、そして未来Visual Studio ~ 過去、現在、そして未来
Visual Studio ~ 過去、現在、そして未来
 
Microsoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPs
Microsoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPsMicrosoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPs
Microsoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPs
 
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
 
LightSwitchで遊んでみた
LightSwitchで遊んでみたLightSwitchで遊んでみた
LightSwitchで遊んでみた
 
Visual Studio 2017 事はじめ
Visual Studio 2017 事はじめVisual Studio 2017 事はじめ
Visual Studio 2017 事はじめ
 

Mais de Oda Shinsuke

Mais de Oda Shinsuke (20)

SQL Server2022_PSPoptimization_pub.pdf
SQL Server2022_PSPoptimization_pub.pdfSQL Server2022_PSPoptimization_pub.pdf
SQL Server2022_PSPoptimization_pub.pdf
 
What's hyperscale
What's hyperscaleWhat's hyperscale
What's hyperscale
 
Dot net+sql server tips
Dot net+sql server tipsDot net+sql server tips
Dot net+sql server tips
 
Sql server 2019 ざっくり紹介
Sql server 2019  ざっくり紹介Sql server 2019  ざっくり紹介
Sql server 2019 ざっくり紹介
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?
 
SQL Server のロック概要
SQL Server のロック概要SQL Server のロック概要
SQL Server のロック概要
 
Blazor 触ってみた
Blazor 触ってみたBlazor 触ってみた
Blazor 触ってみた
 
Linux + PHP でも SQL Server
Linux + PHP でも SQL ServerLinux + PHP でも SQL Server
Linux + PHP でも SQL Server
 
グラフデータベースの話し
グラフデータベースの話しグラフデータベースの話し
グラフデータベースの話し
 
Sql server 2017 新機能のご紹介
Sql server 2017 新機能のご紹介Sql server 2017 新機能のご紹介
Sql server 2017 新機能のご紹介
 
Sql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベースSql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベース
 
Transaction scopeまだダメ
Transaction scopeまだダメTransaction scopeまだダメ
Transaction scopeまだダメ
 
Sql serverと他dbの違いを押さえよう!
Sql serverと他dbの違いを押さえよう!Sql serverと他dbの違いを押さえよう!
Sql serverと他dbの違いを押さえよう!
 
Sql world とは
Sql world とはSql world とは
Sql world とは
 
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
 
Sql world とは
Sql world とはSql world とは
Sql world とは
 
Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介
 
Sql server sql database 最新機能紹介
Sql server sql database 最新機能紹介Sql server sql database 最新機能紹介
Sql server sql database 最新機能紹介
 
Selenium 触ってみよう
Selenium 触ってみようSelenium 触ってみよう
Selenium 触ってみよう
 
Sql database のご紹介
Sql database のご紹介Sql database のご紹介
Sql database のご紹介
 

Último

Último (7)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Ms build 触ってみよう