使用TFS C#API获取工作项链接

时间:2019-05-29 06:25:23

标签: c# azure-devops tfs-sdk

我是TFS API的新手,我正在使用C#代码,如下所述: https://docs.microsoft.com/en-us/azure/devops/integrate/get-started/client-libraries/samples?view=azure-devops

我被设法在我的TFS测试服务器上运行代码,并很容易地获得查询结果。但是,当我尝试获取工作项链接详细信息时,我找不到正确的方法。 当我在代码执行过程中将对象放大为1个对象时,我看到Links属性设置为null,而TFS中的“实际”工作项作为链接的WI作为父对象。知道如何通过WI链接循环获取链接的WI详细信息吗? 在此先感谢:-)

1 个答案:

答案 0 :(得分:1)

您必须在GetWorkItemAsync中设置expand属性:

GetWorkItemAsync(Id, expand: WorkItemExpand.Relations).Result

您可以在“关系”列表中找到所有链接。链接不包含ID,但是您可以从链接URL中提取它。父类型是Rel成员中的 System.LinkTypes.Hierarchy-Reverse 值。关系列表示例:

var wi = GetWorkItemWithRelations(wiId);

if (wi.Relations != null)
    {
        foreach (var wiLink in wi.Relations)
        Console.WriteLine("{0,-40}: {1}", wiLink.Rel, ExtractWiIdFromUrl(wiLink.Url));
    }

static int ExtractWiIdFromUrl(string Url)
{
    int id = -1;

    string splitStr = "_apis/wit/workItems/";

    if (Url.Contains(splitStr))
    {
        string [] strarr = Url.Split(new string[] { splitStr }, StringSplitOptions.RemoveEmptyEntries);

        if (strarr.Length == 2 && int.TryParse(strarr[1], out id))
                return id;
    }

    return id;
}

您可以在此处找到其他链接类型:https://docs.microsoft.com/en-us/azure/devops/boards/queries/link-type-reference?view=azure-devops&viewFallbackFrom=vsts