TFS API-如何从特定团队项目中获取工作项
本文关键字:项目 获取 工作 团队 API- TFS | 更新日期: 2023-09-27 18:24:15
我正在尝试查询主TfsTeamProjectCollection中的单个团队项目,该项目总共包含194个团队项目。我完全知道如何通过Id从WorkItemStore获得WorkItem。问题是,通过这样做,API在集合中的项目的ALL中进行搜索,查询大约需要一分钟。这太慢了,必须有一种方法直接从单个团队项目中查询工作项吗?这是我的代码:
private Uri collectionUri;
private TfsTeamProjectCollection projectCollection;
private WorkItemStore workItemStore;
public Project GetTeamProject()
{
projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(collectionUri);
workItemStore = projectCollection.GetService<WorkItemStore>();
Project teamProject = workItemStore.Projects[TFS_PROJECT_KEY];
return teamProject;
}
既然我有了我感兴趣的团队项目,我如何通过ID查询工作项,或者只获取该项目中的所有工作项?

您可以尝试这样的方法来获取teamProject:中的所有WI
WorkItemCollection workItemCollection = workItemStore.Query(
" SELECT [System.Id], [System.WorkItemType],"+
" [System.State], [System.AssignedTo], [System.Title] "+
" FROM WorkItems " +
" WHERE [System.TeamProject] = '" + teamProject.Name +
"' ORDER BY [System.WorkItemType], [System.Id]");
这是为了获得特定的WorkItem ID:
WorkItem workItem = workItemStore.GetWorkItem(555);
使用查询来查找您感兴趣的工作项可能是最有效的。您可以在查询中添加Where project='@project',以将范围限制在该项目。通过首先调用BeginQuery,然后调用EndQuery,您将只获得您要查找的项的工作项集合。
获得所需wql查询的最简单方法是在团队资源管理器中创建一个查询,然后使用file->save as(在编辑模式下)将其保存到文件中。在记事本中打开该文件,将查询复制到那里。
或者,您可以直接使用WorkItemStore.Query方法来实现同样的效果。