TFS API BranchObjectCreated事件不会触发

时间:2011-11-16 14:35:47

标签: tfs tfs2010 tfs-sdk

我有一些代码可以自动在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中从Source Control Explorer创建分支时,事件永远不会触发。

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

如果是这样,为什么事件不会被解雇?如果没有,是否有其他方法可以挂钩到TFS,以便我可以处理与分支创建相关的事件?

1 个答案:

答案 0 :(得分:4)

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

如果您想要监听服务器上的事件(例如当其他人创建分支,或者您从其他客户端创建分支时),那么您需要绑定到服务器的项目警报系统。

您可以在Alerts Explorer中安装Team Foundation Server Power Tools,以便您可以在向您发送电子邮件或调用网络方法的项目上配置细粒度警报。此时,您可以创建一个引用此新分支的新构建。