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查询工作项,或者只获取该项目中的所有工作项?

TFS API-如何从特定团队项目中获取工作项

您可以尝试这样的方法来获取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方法来实现同样的效果。