0

基本上我的 TFS 层次结构是这样的

P1
- >task1 -
>task2
->task3
->task4
p1 包含以下字段故事所有者,故事作者,分配给,状态,优先级,标题 和 P1 包含 4 个任务我想要 p1 字段的任务的所有详细信息(故事所有者,故事作者,分配给,状态,优先级和标题)。在此处输入图像描述

我没有得到 p1 字段及其任务详细信息(故事所有者、故事作者、分配给、状态、优先级和标题)的代码。

var tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("tfs url"));
                WorkItemStore workItemStore = new WorkItemStore(tpc);

                Query query = new Query(workItemStore, "SELECT * FROM WorkItems WHERE [System.TeamProject] = @project", new Dictionary<string, string>() { { "project", projectname } });

                WorkItemCollection wic = query.RunQuery();
var tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://apactfs.cbre.com:8080/tfs/cbre.apac.applications"));
                WorkItemStore workItemStore = new WorkItemStore(tpc);

                Query query = new Query(workItemStore, "SELECT * FROM WorkItems WHERE [System.TeamProject] = @project", new Dictionary<string, string>() { { "project", projectname } });

                WorkItemCollection wic = query.RunQuery();
foreach (WorkItem item in wic)
                {

                    info += String.Format("{0}\n", item.Title);
                }
4

2 回答 2

1

您必须首先通过一跳查询获取任务列表,然后获取其详细信息。

TfsTeamProjectCollection TTPC = new TfsTeamProjectCollection(new Uri("http://xxx:8080/tfs/xxxCollection/"));
            WorkItemStore wis = TTPC.GetService<WorkItemStore>();
            string project = "projectname";
            string workitemid = "1";
            string wiql = $"SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] FROM WorkItemLinks WHERE (Source.[System.TeamProject] = '{project}' and Source.[System.Id] = {workitemid}) and (Target.[System.TeamProject] = '{project}' and Target.[System.WorkItemType] = 'Task') ORDER BY [System.Id] mode(MustContain)";
            Query query = new Query(wis,wiql);
            WorkItemLinkInfo[] result = query.RunLinkQuery();
            List<WorkItem> tasks = new List<WorkItem> { };
            foreach (WorkItemLinkInfo wili in result)
            {
                if (wili.SourceId == 0)
                {
                    //Get the parent work item here.
                }
                else
                {
                    //Get the details for the linked tasks and add to tasks list.
                    tasks.Add(wis.GetWorkItem(wili.TargetId));
                }
            }
于 2018-02-19T06:47:10.253 回答
1

您可以使用以下查询获取字段:-

WorkItemCollection wic = query.RunQuery();
foreach (WorkItem item in wic)
{
     info += String.Format("{0}\n", item.Title);
     var r = item.Fields.OfType<Microsoft.TeamFoundation.WorkItemTracking.Client.Field>()
                  .Select(x => new
                  {
                      Name = x.Name,
                      Value = x.Value
                      //You can fetch more details here...
                  });
}

请注意,仅出于演示目的,我在这里定义了一个变量。您应该创建一个自定义对象并填充它。

此外,如果您遇到与字段、层次结构等相关的任何问题,请始终调试代码,它会让您清楚地了解数据是如何流动的。基于此,您可以创建自定义对象并继续。

于 2018-02-15T12:02:18.710 回答