ビルド プロセス テンプレートのカスタマイズ

ビルド プロセスで既定のテンプレートによって可能な操作よりも多くの操作を行う必要がある場合は、独自の Windows Workflow Foundation (WWF) 命令に従うようにビルド プロセス テンプレートをカスタマイズできます。 この命令によって、CodeActivity オブジェクトで実装されている .NET Framework コードを実行できます。 Team Foundation ビルド (TFBuild) に組み込まれているか、サード パーティによって提供されているか、または必要に応じて自分でビルドしたアクティビティを実行できます。

ヒント

カスタム ビルド プロセス機能を Windows のバッチ ファイルまたは PowerShell スクリプトでコーディングできる場合は、スクリプトをアップロードし、ビルド プロセスの一部として実行できます。この方法は、カスタム ビルド プロセスを作成するよりも迅速かつ簡単に実行できる可能性があります。「ビルド プロセスでスクリプトを実行する」を参照してください。

  • カスタム ビルド プロセス ソリューションの開始と、テンプレートの作成

  • ビルド定義でのカスタム テンプレートの使用

  • 一般的な質問とその回答

カスタム ビルド プロセス ソリューションの開始と、テンプレートの作成

命令を実装する前に、Team Foundation サーバーから既定のテンプレートのコピーを抽出し、Visual Basic コード プロジェクトに追加します。

重要

Git アイコンGit チーム プロジェクトで作業していますか? ビルド プロセス アクティビティのバイナリをアップロードする予定がありますか? そうである場合は、バイナリを格納すると (特に、大きなファイルの多数のリビジョンがある場合)、Git リポジトリのサイズが巨大になる可能性があります。アプリケーションをビルドするコードとは異なるリポジトリにカスタム ビルド プロセス バイナリを格納することをお勧めします。ビルド プロセス用に別のチーム プロジェクトを作成したり、既存のチーム プロジェクトに追加のリポジトリを作成したりすることができます。

  1. ビルド プロセス ソースを格納する予定のチーム プロジェクト (および該当する場合は Git アイコン Git レポジトリ) に接続します (キーボード: Ctrl + 0、C)。

  2. 新しいコード プロジェクトを作成します (キーボード: Ctrl + Shift + N)。

    具体的には、新しい Visual Basic のワークフロー アクティビティ ライブラリ コード プロジェクト (たとえば、Templates) を含む新しいソリューション (たとえば、BuildProcessSource) を作成します。 わかりやすい場所のバージョン管理された新しいディレクトリにソリューションを追加します。

    TFVC アイコン TFVC の例: C: \Users\YourName\Source\Workspaces\FabrikamTFVC\BuildProcessTemplates\

    Git アイコン Git の例: C:\Users\YourName\Source\Repos\BuildProcesses\

    新しいテンプレートを含むコード プロジェクトを作成

    テンプレートを編集するためにコード プロジェクトが必要なのはどうしてですか。

  3. ビルド ページ (キーボード: Ctrl + 0、B) で、ビルド定義を作成または編集します。

    [ビルド定義の新規作成] または [ビルド定義の編集]

  4. 既定のテンプレートのコピーをダウンロードします。 この手順で先ほど作成したコード プロジェクトと同じフォルダーに、新しいテンプレートを保存します。

    TFVC アイコン TFVC の例: C:\Users\YourName\Source\Workspaces\FabrikamTFVC\BuildProcessTemplates\BuildProcessSource\Templates

    Git アイコン Git の例: C:\Users\YourName\Source\Repos\BuildProcesses\BuildProcessSource\Templates

    ビルド定義用の [プロセス] タブの [ダウンロード] リンク

    [名前を付けて保存] ダイアログ ボックス

  5. ソリューション エクスプローラー (キーボード: Ctrl + Alt + L) で、テンプレートを Templates プロジェクトに追加します。

    ビルド処理テンプレート ファイルをプロジェクトに追加

    [既存項目の追加] ダイアログ ボックス

    Activity1.xaml ファイルは必要ないので、削除してもかまいません。

  6. テンプレートの [ビルド アクション] プロパティを [コンテンツ] に設定します。

    ビルド アクションにコンテンツを設定

  7. 以下の参照を Templates コード プロジェクトに追加します。

    どのようにすれば、これらの参照をコード プロジェクトに追加できますか。

    コード プロジェクトを保存します。

  8. チェックインしてからテンプレートを実行したときに、正しく動作していることが確認できるように、"Hello World!" メッセージを実装します。 そのためには、WriteBuildMessage アクティビティをワークフローにドラッグし、BuildMessageImportance プロパティを Microsoft.TeamFoundation.Build.Client.BuildMessageImportance.High に設定します。

    テンプレートに追加された WriteBuildMessage アクティビティ

  9. テンプレートを保存し、新しいソリューションをアップロードします。 TFVC アイコン TFVC では保留中の変更をチェックインし (キーボード: Ctrl + 0、P)、Git アイコン Git ではコミットして (Keyboard Ctrl + 0, G) プッシュします。

    TFVC または Git を使用した変更のアップロード

ビルド定義でのカスタム テンプレートの使用

上で説明したように、カスタム ビルド プロセス テンプレートをチーム プロジェクトにアップロードしたら、ビルド定義のテンプレートを使用できます。

  1. ビルド ページ (キーボード: Ctrl + 0、B) で、ビルド定義を作成または編集します。

  2. ビルド定義の [プロセス] タブで、詳細の表示 [詳細の表示][新規作成] の順に選択します。

    ビルド定義用の [プロセス] タブ、[新規作成] ボタン

  3. [新規作成] を選択した後、次の操作を行います。

    • TFVC: Team Foundation Server 上のテンプレートへのパスを入力するか、参照して指定します。

    • Git: 開発用コンピューター上のテンプレートへのパスを入力するか、参照して指定します。

  4. テンプレートへのパスを指定すると、一覧から選択できるようになります。

    ビルド定義で選択されたカスタム テンプレート

  5. 新しいビルド定義を作成している場合は、ビルドしているソリューションを選択し、ステージング場所とその他の必要なオプションを指定します。 「ビルド定義の作成または編集」を参照してください。 操作を終了したら、ビルド定義を保存します。

  6. ビルド ページ (キーボード: Ctrl + 0、B) で、ビルドをキューに配置します。

    ビルド ページからビルドをキューに挿入

  7. ビルドが完了したら、結果を表示して、カスタマイズしたワークフローが期待どおりに実行されたことを確認します。

    ビルド ログに表示された "Hello World!" メッセージ

Q & A

Q: アクセス許可がないため、システムによってブロックされてしまいました。アクセス許可を得るにはどうすればよいですか。

A: Team Foundation Server のアクセス許可の参照

Q: テンプレートを編集するためにコード プロジェクトが必要なのはどうしてですか。

A: テンプレートは、コード プロジェクト内から編集する必要があります。

  • コード プロジェクトのコンテキストの外部でテンプレートを編集しようとすると、問題が発生する場合があります。

  • 問題が発生しないようにするには、ビルド プロセス テンプレートと同じソリューション内で、ビルド プロセス アクティビティを開発します。 このようにすると、プロセス テンプレート内のいずれかのアクティビティを使用する必要がある場合に、このアクティビティをワークフロー デザイナーのツールボックスで利用できます。 ただし、アクティビティのソース コードは、ビルド プロセス テンプレートを含むプロジェクトとは別のコード プロジェクトで保持する必要があります。 「カスタム ビルド プロセスのアクティビティを使用と開発を行う」を参照してください。

Q: TFBuild ワークフローで操作する必要がある参照を追加するにはどうすればよいですか。

A: 参照を追加するには、参照マネージャーを使用します。

コード プロジェクトの参照を表示し、参照マネージャーを開きます。

カスタム テンプレート コード プロジェクトの参照

[参照マネージャー] ダイアログ ボックス

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ReferenceAssemblies\v2.0 に移動し、以下のものを選択して追加します。

[参照するファイルの選択] ダイアログ ボックス

[参照マネージャー] ダイアログ ボックス

Q: チーム プロジェクト間でテンプレートを共有できますか。

A: できます。 複数のチーム プロジェクトに、テンプレートを登録できます。 これは、そのテンプレートが含まれるチーム プロジェクト コレクション内のすべてのチーム プロジェクト間で、ビルド プロセスを共有できることを意味します。

Q: テンプレートを変更すると、そのプロセスを使用しているビルド定義にどのようにな影響がありますか。

A: テンプレートを変更する必要がある場合、そのテンプレートに基づいたすべてのビルド定義を確認し、そのテンプレートの変更を完了した後でそれらを訂正するように計画を立てる必要があります。 これを実行しないと、そのビルド定義は失敗するか、予期しない動作をする可能性があります。

Q: ビルド プロセス テンプレートを削除すると、どのようなことが起こりますか。

A: ビルド プロセス テンプレートを削除する場合、そのテンプレートに基づいたすべてのビルド定義を検索して削除する必要があります。 そのテンプレートを削除すると、テンプレートに基づいたビルド定義が残っていた場合、その定義は機能しなくなります。

Q: カスタム ビルド プロセスのエラーの原因は何ですか。

A: 一般に、エラーが発生する原因として次のことが考えられます。

  • TF215097: カスタム アクティビティに必要な属性がない場合、またはカスタム アクティビティを含む同じコード プロジェクトでテンプレートを編集しようとした場合に発生する可能性があります。

  • MSBuild エラー XC1014: テンプレートの [ビルド アクション] を [コンテンツ] に設定しない場合に発生する可能性があります。

上記のエラーのどちらかが表示された場合は、前の手順の中で実行していない手順がないかを確認します。

ビルドの問題の診断」を参照すると役に立ちます。

Q: Windows Workflow Foundation とは何ですか。どのように使用するのですか。

A: Windows Workflow Foundation

Q: 環境変数データを取得するにはどうすればよいですか。

A: カスタム ビルド プロセスからの環境データの使用

Q: 組み込みアクティビティについては、どこで学習できますか。

A: Team Foundation ビルドのアクティビティ

組み込みアクティビティがニーズを満たしていない場合は、どうすればよいですか。

A: 独自のカスタム ビルド プロセス アクティビティを開発します

Q: テンプレート、ワークフロー アクティビティ、およびスクリプトはどこで取得できますか。

A: TFS ビルド拡張機能のコミュニティ

Q: カスタム ビルド プロセスの開発方法に関する詳細は、どこで学習できますか。

A: Curated answer: Customize your Team Foundation Build process (回答: Team Foundation ビルド プロセスのカスタマイズ)