TFS Azure 2017 工作项更改事件处理程序 - 分支关系

问题描述

我们在 tfs 中有一个插件。当任何工作项更改时,此插件通知我们。我们可以按如下方式获取工作项详细信息,例如 id、变更集列表。但是我们还需要与工作项相关的分支名称

你能帮我吗,当工作项在下面的代码中改变时,有没有办法获得相关的分支名称

谢谢

    public EventNotificationStatus ProcessEvent(
        IVssRequestContext requestContext,NotificationType notificationType,object notificationEventArgs,out int statusCode,out string statusMessage,out ExceptionPropertyCollection properties)
    {
        statusCode = 0;
        properties = null;
        statusMessage = String.Empty;
        

        try
        {
            if (notificationType == NotificationType.Notification && notificationEventArgs is WorkItemChangedEvent)
            {
                WorkItemChangedEvent ev = notificationEventArgs as WorkItemChangedEvent;
                int workItemId = Convert.ToInt32(ev.CoreFields.IntegerFields[0].NewValue);
                
                WriteLog("1WorkItemChangedEventHandler WorkItem " + ev.WorkItemTitle + " - Id " + workItemId.ToString() + " was modified");
                

            }

        }
        catch (Exception)
        {
        }

        return EventNotificationStatus.ActionPermitted;
    }

解决方法

您可以使用 workItemStore.GetWorkItem(workItemId ) 获取所有工作项信息。在此处查看类似问题:How can I get a reference to the TFS WorkItem in a WorkItemChangedEvent?

如果你使用git,你可以试试下面的例子来获取分支引用:

int workitemId = YOUR_ID;

WorkItemStore wiStore = new WorkItemStore("{YOUR_URI}");

WorkItem wi = wiStore.GetWorkItem(workitemId);            

foreach (Link link in wi.Links)
{
    if (link.BaseType == BaseLinkType.ExternalLink)
    {
        var brList = ((ExternalLink)link).LinkedArtifactUri.Split(new string[] { "%2F" },StringSplitOptions.RemoveEmptyEntries).ToList();

        brList.RemoveAt(0); //remove project and repo giuds
        brList.RemoveAt(0);
        brList[0] = brList[0].Replace("GB",""); // remove GB prefix

        Console.WriteLine("Branch: {0}",string.Join("/",brList));
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...