如何以分层格式获取TFS BackLog项的列表

本文关键字:BackLog 列表 TFS 获取 分层 格式 | 更新日期: 2023-09-27 18:21:43

我正在尝试列出我的所有积压项目,但有些积压项目有子积压项目。我想这样列出它们:BackLogItemParent/BackLogItemChild1/BackLogItemChild2等等,不管每个父项有多少个子项。

我可以获得所有积压项目:

public WorkItemCollection BackLogItems()
        {
            WorkItemCollection results = this.tfsWorkItemStore.Query(
                "Select [System.Id], [System.Title] " +
                "From WorkItems " +
                "Where [Work Item Type] = 'Product BackLog Item' " +
                "And [System.Title] <> '<unused>' " +
                "Order By [System.Title] Asc"
                );
            return results;
        }

并可能做一些类似的事情:

 private WorkItem GetChildBackLogItems(WorkItem wi)
        {                
            foreach (WorkItemLink wil in wi.WorkItemLinks) 
            {                    
             //some sort of recursive call to get all links if backlog is a parent
             //but may need to filter out by top parent items first.
            }
            return wi;
        }

但是我很难按照我想要的方式创建列表,因为我还没有很好地理解代码中如何表示链接。我怀疑我可能需要使用workitemlinks表。

在团队资源管理器中有一个"工作项树"查询类型,它以层次结构的方式列出了这些项,我想我正在尝试做一些类似的事情,只是更简单一点。

如有任何帮助,我们将不胜感激。

如何以分层格式获取TFS BackLog项的列表

如果您在Visual Studio中创建了一个具有所需内容的查询,则可以使用"另存为…"将其保存到桌面。这将是一个"层次结构"查询。

然后,您可以通过将查询传递给WorkItemStore.query().来获得整个Workiten列表作为平面列表

之后,您可以在代码中迭代并构建树。

我的代码基于Colin的解决方案。在核心,您需要调用Query.RunLinkQuery,然后调用WorkItemStore.GetWorkItem来下拉您的工作项。