【问题标题】:TFS API BranchObjectCreated Event does not fireTFS API BranchObjectCreated 事件不会触发
【发布时间】:2011-11-17 02:31:41
【问题描述】:

我有一些代码可以在 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 以便我可以处理与创建分支相关的事件?

【问题讨论】:

    标签: tfs tfs-sdk


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,我查看了事件服务,但没有创建分支的事件。最后,我创建了一个服务,该服务每隔一段时间通过 VersionControlServer 中的 QueryRootBranchObjects 查询分支,然后从自上次查询以来创建的任何新分支创建一个构建。
    • +1 为此,我应该提到轮询作为一种选择,这就是我过去所做的,也取得了巨大的成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多