2011-05-10 70 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