2011-05-10 71 views
11

在TFS 2010中,我有工作项目与关联的变更集。我可以生成一个查询,报告我正在查找的工作项目。现在我想查询工作项目和直接链接,其中包括链接到这些工作项目的所有变更集。在查询编辑器中,我无法找到任何方法将变更集指定为链接项目。是工作项目唯一的输出可能从查询?如何在TFS中查询工作项目及其关联的变更集?

回答

12

我刚参加网络研讨会改进开发人员和测试人员合作我提出了我的问题。 alpi.com的讲师Ken Arneson证实,无法通过TFS团队资源管理器中的查询编辑器报告指向变更集的链接。要访问变更集的链接,必须使用其他工具访问“Cube”。我有更多要学习。

+1

呃哎呀,糟糕,我正在寻找类似的东西,我想查看与特定日期范围内变更集相关的工作项。如果我找到有用的东西,我会评论或回答。 – BlackICE 2011-06-02 15:49:17

+0

恩,对我非常有帮助,只是想看看如何访问查询... – anhoppe 2013-10-01 07:11:13

21

一个选项是使用TFS API,如下面的代码片段。

var projectCollection = new TfsTeamProjectCollection(
    new Uri("http://localhost:8080/tfs"), 
    new UICredentialsProvider()); 
projectCollection.EnsureAuthenticated(); 
var workItemStore = projectCollection.GetService<WorkItemStore>(); 
var versionControlServer = projectCollection.GetService<VersionControlServer>(); 
var artifactProvider = versionControlServer.ArtifactProvider; 
var project = workItemStore.Projects["Test01.MSFAgile.v5"]; 
var teamQueryFolder = project.QueryHierarchy["Team Queries"] as QueryFolder; 
var query = teamQueryFolder["My Tasks"]; 
var queryDefinition = workItemStore.GetQueryDefinition(query.Id); 
var variables = new Dictionary<string, string> 
{ 
    {"project", query.Project.Name} 
}; 
var workItemCollection = workItemStore.Query(
    queryDefinition.QueryText, 
    variables); 
foreach (WorkItem workItem in workItemCollection) 
{ 
    Console.WriteLine("WI: {0}, Title: {1}", workItem.Id, workItem.Title); 
    foreach (var changeset in 
     workItem.Links 
      .OfType<ExternalLink>() 
      .Select(link => artifactProvider 
       .GetChangeset(new Uri(link.LinkedArtifactUri)))) 
    { 
     Console.WriteLine(
      "CS: {0}, Comment: {1}", 
      changeset.ChangesetId, 
      changeset.Comment); 
    } 
} 
9

如果您执行查询并包含外部链接计数> 0,这实际上会为您提供所有与其关联的变更集的工作项。

+0

嘿,这很简单!我的要求只是审核没有变更集的需求,所以这就是我需要的! – StoneJedi 2013-07-05 23:28:07

+1

请记住,测试结果也会增加外部链接计数,所以如果您使用TFS进行测试执行,这可能不是最好的方法。 – Technobabble 2015-07-13 22:56:16