4

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にフックできる別の方法はありますか?

4

1 に答える 1

4

イベントをクライアントAPIに接続すると、そのクライアントによって作成されたイベントのみが取得されます。リスナーを接続してからBranchObjectCreated呼び出すとVersionControlServer.CreateBranch()、ブランチオブジェクトで作成されたリスナーが呼び出されます。

サーバー上のイベントをリッスンする場合(他の誰かがブランチを作成した場合や、別のクライアントからブランチを作成した場合など)、サーバーのプロジェクトアラートシステムに接続する必要があります。

アラートエクスプローラーTeamFoundationServer Power Toolsにインストールすると、電子メールを送信したりWebメソッドを呼び出したりするプロジェクトにきめ細かいアラートを構成できます。この時点で、この新しいブランチを参照する新しいビルドを作成できます。

于 2011-11-16T18:31:41.410 に答える