カスタマイズ可能な Team Foundation のビルド ターゲット
MSBuild のターゲットとは、MSBuild プロジェクトのビルド方法を定義するものです。 Microsoft.TeamFoundation.Build.targets ファイルには、ターゲットの階層構造と一連の定義済みの MSBuild のタスクおよびターゲットが Team Foundation ビルド用に定義されており、すべての Team Foundation ビルドの種類で使用されます。 ビルド定義には、TfsBuild.proj という名前のプロジェクト ファイルが含まれています。 このプロジェクト ファイルは、1 つまたは複数のビルド定義と関連付けることができます。 TfsBuild.proj では、Microsoft.TeamFoundation.Build.targets ファイルがインポートされ、さまざまなプロパティや項目グループの値が用意されています。 TfsBuild.proj ファイルをカスタマイズして、階層構造内のいくつかの拡張ポイント ターゲットをオーバーライドできます。 targets ファイルは、ビルド エージェントの <root>:\Program Files\MSBuild\Microsoft\VisualStudio\TeamBuild にあります。
重要
Microsoft.TeamFoundation.Build.targets ファイルは変更しないでください。
MSBuildのターゲットの詳細については、「MSBuild ターゲット」を参照してください。
タスクでカスタマイズできるターゲット
タスクはターゲット内に含まれます。 タスクでは、ビルド プロセスの間に実行するコードを指定します。 次の表は、機能拡張用に定義されているすべての Team Foundation ビルド ターゲットの一覧です。 ビルド処理のどの時点でカスタム タスクを実行する必要があるかに応じて、これらのターゲットのいずれかにタスクを挿入します。
注意
他のターゲットはオーバーライドしないことをお勧めします。
ターゲット名 |
説明 |
---|---|
BeforeEndToEndIteration |
ビルド処理が開始されるときにカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterEndToEndIteration |
ビルド処理の最後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BeforeInitializeWorkspace |
ワークスペースを初期化する前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterInitializeWorkspace |
ワークスペースを初期化した後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BuildNumberOverrideTarget |
ビルド番号または格納場所に関連するプロパティをカスタマイズする場合は、このターゲットにタスクを挿入します。 作成するタスクでは、BuildNumber という出力プロパティを作成する必要があります。 |
BeforeClean |
クリーンを行う前に呼び出されます。 クリーン前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterClean |
クリーンが完了した後に呼び出されます。 クリーン後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BeforeGet |
ソース管理からソースが取得される前に呼び出されます。 ソースの取得前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterGet |
ソースが取得された後に呼び出されます。 ソースの取得後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BeforeLabel |
ソースにラベルが設定される前に呼び出されます。 Label ターゲットの前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterLabel |
ラベル設定が完了した後に呼び出されます。 Label ターゲットの後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BeforeCompile |
コンパイルの開始前に呼び出されます。 コード ファイルがコンパイルされる前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BeforeCompileConfiguration |
各構成をコンパイルする前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BeforeCompileSolution |
各ソリューションをコンパイルする前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterCompileSolution |
各ソリューションをコンパイルした後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterCompileConfiguration |
各構成をコンパイルした後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterCompile |
コンパイルが完了した後に呼び出されます。 コード ファイルがコンパイルされた後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BeforeGetChangesetsAndUpdateWorkItems |
変更セットの関連付けと成功したビルドの作業項目の更新を行う前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterGetChangesetsAndUpdateWorkItems |
変更セットの関連付けと成功したビルドの作業項目の更新を行った後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BeforeTest |
テストの実行前に呼び出されます。 Test ターゲットの前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BeforeTestConfiguration |
各構成をテストする前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterTestConfiguration |
各構成をテストした後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterTest |
テストが完了した後に呼び出されます。 Test ターゲットの後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BeforeDropBuild |
ビルドのバイナリ、ビルドのログ ファイル、およびテスト結果をリリース サーバーのビルド ドロップ ディレクトリに保存する前に呼び出されます。 ビルドされたファイルがドロップ ディレクトリに保存される前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterDropBuild |
ビルドのバイナリおよびテスト結果をリリース サーバーにドロップした後に呼び出されます。 ビルドされたファイルがドロップ ディレクトリに保存された後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BeforeCreateWorkItem |
作業項目を作成する前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterCreateWorkItem |
作業項目を作成した後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
BeforeOnBuildBreak |
ビルド ブレークの結果として作業項目を作成する前に呼び出されます。 BuildBreak ターゲットの前にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
AfterOnBuildBreak |
ビルド ブレークの結果として作業項目が作成された後に呼び出されます。 BuildBreak ターゲットの後にカスタム タスクを実行する場合は、このターゲットにタスクを挿入します。 |
GenerateDocumentation |
これは空のターゲットです。 ビルド処理中にドキュメントを生成する場合は、このターゲットにタスクを挿入します。 |
カスタム タスク実行のためのターゲットのオーバーライド
作成するタスク コードはターゲットと組み合わせる必要があります。 詳細については、「タスクの作成」を参照してください。 カスタム タスクを作成するには、次の手順を実行する必要があります。
タスク コードを作成し、TfsBuild.proj ファイルでソース管理パスを指定するか、ビルド コンピューター自体でビルドのバイナリを使用できるようにすることで、ビルドのバイナリがビルド コンピューターで確実に使用できるようにします。
注意
実際のコードでは、タスク コードをソース管理にチェックインすると便利ですが、必ずしもこれを行う必要はありません。
MSBuild の UsingTask 要素を使用してカスタム タスクを宣言することにより、カスタム タスクを TfsBuild.proj ファイルで登録します。
詳細については、「UsingTask 要素 (MSBuild)」を参照してください。
<UsingTask TaskName="MyTasks.SimpleTask" AssemblyName="MyAssembly.Build.Tasks"/>
TfsBuild.proj ファイルの目的のターゲットにタスクを挿入することで、タスクを実行します。
<Target Name="BeforeGet"> <SimpleTask /> </Target>
注意
このタグを追加すると、XML スキーマ警告が表示されます。 この警告は無視してかまいません。
カスタム タスクが含まれている DLL をビルド コンピューターに配置します。
重要
カスタマイズした TfsBuild.proj ファイルに関連付けられているすべてのビルド定義は、変更の影響を受けます。
ターゲットの実行順序
ターゲットの実行順序は、CleanCompilationOutputOnly プロパティの値に依存します。 CleanCompilationOutputOnly が true の場合、clean ターゲット (BeforeClean、CoreClean、および AfterClean) は、get ターゲットと label ターゲット (BeforeGet、CoreGet、AfterGet、BeforeLabel、CoreLabel、および AfterLabel) の実行後に実行されます。 CleanCompilationOutputOnly プロパティが false の場合、clean ターゲットは、get ターゲットと label ターゲットの実行前に実行されます。 CleanCompilationOutputOnly が true の場合は、CoreClean ターゲットの実行時に、ソース ディレクトリから中間アセンブリのみが削除されます。 このプロパティを false に設定すると、CoreClean ターゲットの実行時に、ソース ディレクトリ全体が削除されます。
CleanCompilationOutputOnly が true の場合と false の場合のターゲットの実行順序を、次の表に示します。 オーバーライドできるターゲットは、太字で表示されています。
CleanCompilationOutputOnly = true |
CleanCompilationOutputOnly = false |
---|---|
|
|
CoreCompile ターゲットの実行中にエラーが発生した場合、ターゲットは次の順序で実行されます。 オーバーライドできるターゲットは、太字で表示されています。
SetBuildBreakProperties
BeforeOnBuildBreak
GetChangesetsOnBuildBreak
BeforeDropBuild
CoreDropBuild
AfterDropBuild
BeforeCreateWorkItem
CoreCreateWorkItem
AfterCreateWorkItem
CoreOnBuildBreak
AfterOnBuildBreak