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
    }

问题是当我从 Visual Studio 中的源代码管理资源管理器创建分支时,该事件永远不会触发。

MSDN 文档是有限的,我找不到任何其他使用示例,所以我希望有人能够告诉我这是否是正确的方法。

如果是这样,为什么事件可能不会触发?如果没有,是否有另一种方法可以连接到 TFS 以便我可以处理与创建分支相关的事件?

4

1 回答 1

4

当您将事件连接到客户端 API 时,您只会获得由该客户端创建的事件。如果您要连接一个BranchObjectCreated侦听器,然后调用VersionControlServer.CreateBranch()那么您的分支对象创建的侦听器将被调用。

如果你想监听服务器上的事件(比如当别人创建一个分支,或者你从不同的客户端创建一个分支),那么你需要绑定到服务器的项目警报系统。

您可以在Team Foundation Server Power Tools中安装警报资源管理器,这将允许您在将向您发送电子邮件或调用 Web 方法的项目上配置细粒度警报。此时,您可以创建一个引用此新分支的新构建。

于 2011-11-16T18:31:41.410 回答