方法 : ビルド番号をカスタマイズする
更新 : 2007 年 11 月
ビルド中に実行される独自のカスタム タスクを作成することで、Team Foundation ビルドをカスタマイズできます。ここでは、ビルド番号を生成するタスクで Team Foundation ビルドのビルド定義をカスタマイズするために必要な手順について説明します。
必要条件
ビルド番号をカスタマイズするタスクを作成するには、以下が必要です。
カスタマイズするビルド定義に対応した TFSBuild.proj ファイルへのアクセス。
TFSBuild.proj ファイルは、1 つまたは複数のビルド定義に関連付けることができます。TFSBuild.proj ファイルのソース管理の場所を確認するには、チーム エクスプローラで [ビルド] フォルダ内のビルド定義を右クリックし、[編集] をクリックします。TFSBuild.proj ファイルのソース管理の場所が、[ビルド定義] ダイアログの [プロジェクト ファイル] ペインに表示されます。既定では、TFSBuild.proj ファイルは、Team Foundation バージョン管理の $/MyTeamProject/TeamBuildTypes/MyBuildName フォルダに配置されます。MyTeamProject はチーム プロジェクトの名前で、チーム プロジェクトのすべてのソースのルート ノードです。MyBuildName は、TFSBuild.proj ファイルに関連付けられた最初のビルド定義に付けた名前です。Team Foundation ビルドのビルドの種類を作成する方法の詳細については、「方法 : ビルド定義を作成する」を参照してください。
重要 : TFSBuild.proj ファイルをカスタマイズすると、それに関連付けられているビルド定義がカスタマイズされます。
ローカル コンピュータ上にチーム プロジェクト ファイルとビルド ファイルが置かれたローカル ワークスペース。
詳細については、「方法 : マップされたワークスペースを作成する」および「方法 : チーム プロジェクトのソースを取得する」を参照してください。
必要なアクセス許可
このタスクを実行するには、[ビルドを管理します] および [ワークスペースの管理] のアクセス許可が [許可] に設定されている必要があります。また、[チェックイン] および [チェックアウト] のアクセス許可も [許可] に設定されている必要があります。詳細については、「Team Foundation Server のアクセス許可」を参照してください。
ビルド番号のタスクの作成
タスクを作成するには、ITask インターフェイスを直接実装するか、または Task ヘルパー クラスから派生するクラスを作成します。ITask は Microsoft.Build.Framework.dll アセンブリで定義され、Task は Microsoft.Build.Utilitites.dll アセンブリで定義されています。
Team Foundation ビルドによって生成されるビルド番号をカスタマイズするには、BuildNumberOverrideTarget ターゲットにタスクを挿入する必要があります。BuildNumberOverrideTarget には BuildNumber という出力プロパティが必要です。Output 属性により、プロパティがカスタム タスクの出力であることを示します。Team Foundation ビルドのターゲットの詳細については、「カスタマイズ可能な Team Foundation のビルド ターゲット」を参照してください。
カスタム タスクを作成するには
カスタム タスクが含まれる、MyTask という名前の Visual C# クラス ライブラリを作成します。
詳細については、「コンポーネントのクラス」を参照してください。
[プロジェクト] メニューの [参照の追加] をクリックし、[参照の追加] ダイアログ ボックスで、[Microsoft.Build.Framework] および [Microsoft.Build.Utilities] を選択します。
次のコードを class.cs ファイルに追加します。
この例では、Task ヘルパー クラスを継承し、DateTime の UtcNow プロパティおよび Ticks プロパティを使用してビルド番号を生成します。
using System; using Microsoft.Build.Utilities; using Microsoft.Build.Framework; namespace BuildNumberGenerator { public class BuildNumberGenerator:Task { public override bool Execute() { m_buildNumber = DateTime.UtcNow.Ticks.ToString(); return true; } private string m_buildNumber; [Output] public string BuildNumber { get { return m_buildNumber; } } } }
クラス ライブラリをビルドして、MyTask.dll を生成します。
ビルドされた DLL をローカル ワークスペース フォルダにコピーします。このフォルダには、目的のビルド定義の TFSBuild.proj ファイルも含まれています。
重要 : TFSBuild.proj ファイルのソース管理の場所をローカル ワークスペースにマップしていないと、クライアント コンピュータにこのディレクトリ構造は存在しません。詳細については、「方法 : チーム プロジェクトのソースを取得する」を参照してください。
TFSBuild.proj ファイルが既定のソース管理フォルダに保存されている場合、そのファイルのローカル コピーは、クライアント コンピュータの <root>:\Local Workspace\TeamBuildTypes\MyBuildName に配置されます。Local Workspace はチーム プロジェクトのマップ先のローカル フォルダ、MyTeamProject はチーム プロジェクトの名前、MyBuildName はこの TFSBuild.proj ファイルに関連付けられた最初のビルド定義に付けた名前です。
ソース管理への DLL ファイルの追加
カスタム タスクを含む DLL を作成したら、その DLL を Team Foundation バージョン管理に追加する必要があります。tf add コマンドと tf checkin コマンドを使用すると、目的のビルド定義の TfsBuild.proj ファイルと同じ場所に DLL を追加してチェックインできます。詳細については、「Add コマンド」および「Checkin コマンド」を参照してください。
アセンブリを追加およびチェックインするには
[スタート] ボタンをクリックし、[すべてのプログラム]、[Microsoft Visual Studio 9.0]、[Visual Studio Tools] の順にポイントし、[Visual Studio 2008 コマンド プロンプト] をクリックします。カスタマイズするビルドの種類を含むチーム プロジェクトにマップしたローカル ワークスペースを開きます。
たとえば、コマンド プロンプトで次のように入力します。
> cd c:\MyTeamProject
MyTeamProject はチーム プロジェクトの名前です。
TFSBuild.proj ファイルの保存場所に移動します。
たとえば、コマンド プロンプトで次のように入力します。
c:\MyTeamProject>cd TeamBuildTypes\MyBuildName
MyBuildName はビルド定義の名前です。
Team Foundation バージョン管理にファイルを追加するには、次のコマンドを入力します。
c:\MyTeamProject\TeamBuildTypes\MyBuildName> tf add MyTask.dll
Team Foundation バージョン管理にファイルをチェックインするには、次のコマンドを入力します。
c:\MyTeamProject\TeamBuildTypes\MyBuildName> tf checkin MyTask.dll
チーム エクスプローラを使用して DLL を Team Foundation バージョン管理に追加することもできます。詳細については、「方法 : プロジェクトまたはソリューションをバージョン管理に追加する」を参照してください。
タスクの登録
タスクを作成した後、TFSBuild.proj ファイルの UsingTask 要素でタスクを指定して、タスクを登録する必要があります。UsingTask 要素は、タスクの実装を持つアセンブリに対応付けます。詳細については、「UsingTask 要素 (MSBuild)」を参照してください。
TFSBuild.proj ファイルを変更してタスクを登録するには
Visual Studio を起動します。
変更する TFSBuild.proj ファイルを Team Foundation バージョン管理からチェックアウトし、Visual Studio XML エディタで開きます。
TFSBuild.proj ファイルで、インポート ステートメントの直後に UsingTask 要素を追加します。
<UsingTask TaskName="BuildNumberGenerator.BuildNumberGenerator" AssemblyFile="MyTask.dll"/>
BuildNumberOverrideTarget ターゲットにタスクを挿入するには、次の <Target></Target> タグで囲まれた XML を TFSBuild.proj ファイルの末尾に追加します。
</ItemGroup> <Target Name = "BuildNumberOverrideTarget" > <BuildNumberGenerator> <Output TaskParameter="BuildNumber" PropertyName="BuildNumber"/> </BuildNumberGenerator> </Target> </Project>
[ファイル] をクリックし、[保存] をクリックして変更を保存して、TFSBuild.proj ファイルを閉じます。
メモ : TFSBuild.proj ファイルを変更すると、XML スキーマ警告が表示されます。この警告は無視してかまいません。
TFSBuild.proj をソース管理に再度チェックインします。
TFSBuild.proj ファイルを変更し、Team Foundation バージョン管理に変更を保存したら、ビルド定義を実行します。
詳細については、「方法 : ビルド定義をキューに配置する/ビルド定義を開始する」を参照してください。
ビルド エクスプローラでカスタムのビルド番号を確認できます。詳細については、「方法 : ビルドの進行状況を監視する」を参照してください。