如何从 TFS 获取子工作项的激活日期和关闭日期

Posted

技术标签:

【中文标题】如何从 TFS 获取子工作项的激活日期和关闭日期【英文标题】:How to get the Activated Date and Closed Date of a child workitem from TFS 【发布时间】:2014-09-19 11:03:53 【问题描述】:

我想获取子工作项的激活和关闭日期,我正在使用以下查询:

SELECT
[System.Id]
,[System.Links.LinkType]
,[System.WorkItemType]
,[System.Title]
,[System.AssignedTo]
,[System.CreatedDate]
,[System.ChangedDate]
,[Microsoft.VSTS.Common.ClosedDate]
,[Microsoft.VSTS.Common.ActivatedDate]
FROM WorkItems Where [System.Id] = 27279

我正在收集如下结果:

 var flatQuery = new Query(workItemStore, detailsWiql.ToString());
 var workitems = flatQuery.RunQuery();
 var dispItem = new DisplayWorkItem
                

                                ChangedBy = workitems[0].ChangedBy,
                                CreatedDate =  workitems[0].CreatedDate,
                                WorkItemType = workitems[0].Type.Name,
                                ParentID = links[i].TargetId
                 ;
                 displayItems.Add(dispItem);

问题出在使用 .操作员我看到一个列表,其中激活日期和关闭日期选项不可用。

有什么建议我在哪里犯了错误?

【问题讨论】:

【参考方案1】:

这有点难以理解,但如果您只是在寻找特定或已知的工作项 I.E. 27279;为什么要运行查询并只使用 WorkItemStore 对象中的 GetWorkItem 方法。

var wi = workItemStore.GetWorkItem(27279);
foreach(var link in wi.WorkItemLinks)

     if(link.LinkTypeEnd.Name == "Child")
     
         var child = workItemStore.GetWorkItem(link.TargetID)
         child["Closed Date"]
      

【讨论】:

BJHop 在这里给出了一个隐式指针:只有一堆字段可用作 C# 属性。您可以使用 workitem["field name or reference"] 语法访问任何字段。【参考方案2】:

您需要指定 workitem[0].Fields["System.ActivatedDate"].Value 来获取您之后的数据。还要记住,该字段可能不可用或未设置。一点防御性编程,你就可以开始了。

您需要将这些字段指定为由查询返回,这样您就不需要执行 workitem[0].Open() 来获取完整的工作项。如果您需要使用 .Open ,它会减慢您的代码速度。

此外,您需要创建一个工作项和直接链接查询。最简单的方法是在 Visual Studio 中构建您想要的查询,然后将其另存为桌面。

【讨论】:

以上是关于如何从 TFS 获取子工作项的激活日期和关闭日期的主要内容,如果未能解决你的问题,请参考以下文章

java - 如何从Java日历中获取指定周的星期六日期? [关闭]

在 TFS 中,如何更正现有变更集上工作项的链接

jQuery:如何从与 datepicker 插入日期的输入字段不同的元素中激活 datepicker?

如何在特定日期从模型中获取信息? [关闭]

如何通过代码获取 TFS 工作项验证错误消息?

如何从日期时间 C# 中仅获取时间 [关闭]