TFSでのビルド定義の作成を自動化するためのコードがいくつかあります。
ここで、ブランチが作成されるたびにこのコードを呼び出したいと思います。
APIを見ると、Microsoft.TeamFoundation.VersionControl.Client.VersionControlServerにBranchObjectCreatedEventがあることがわかります。
そこで、イベントを処理するためのコードをコンソールアプリに追加しました。
private static void MonitorBranchCreated()
{
try
{
TfsTeamProjectCollection tfs = InitialiseTfs();
var vcs = tfs.GetService<VersionControlServer>();
var projects = vcs.GetAllTeamProjects(true);
foreach (var project in projects)
{
project.VersionControlServer.BranchObjectCreated += BranchObjectCreated;
}
Console.WriteLine("Subscribed to TFS BranchObjectCreated Event - Awaiting Notification...");
Console.ReadLine();
}
catch (Exception exception)
{
DisplayError(exception);
}
}
private static void BranchObjectCreated(object sender, BranchObjectCreatedEventArgs e)
{
// Create the Build
}
問題は、VisualStudioのソース管理エクスプローラーからブランチを作成したときにイベントが発生しないことです。
MSDNのドキュメントは限られており、他の使用例が見つからないため、これが正しいアプローチであるかどうかを誰かに教えてもらえるといいのですが。
もしそうなら、なぜイベントが発生しないのでしょうか?そうでない場合、ブランチの作成に関連するイベントを処理できるようにTFSにフックできる別の方法はありますか?