2013-10-10 107 views
6

我正在使用TFS客戶端庫,例如Microsoft.TeamFoundation。*程序集...鑑於我有一個Iteration名稱,我如何檢索屬於它的所有工作項目?如何在迭代中獲取所有工作項目?

我試着使用Query對象執行以下操作:

var uri = new Uri(ConfigurationManager.AppSettings["TfsUri"]); 
var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(uri); 
var wiStore = tfs.GetService<WorkItemStore>(); 

var queryText = "select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] from WorkItems where [System.TeamProject] = 'VieroSAT' and [System.State] = 'Dev' order by [System.Id]"; 
var query = new Query(wiStore, queryText); 

,但我無法弄清楚如何通過迭代名稱限制的結果。我寧願使用TFS程序集返回這些值,但我找不到合適的方法。

所以我的問題......

  1. 如何在迭代返回的所有工作項目列表,使用TFS大會唯一(如無查詢)。
  2. 如果#1是不可能的,我怎麼做以上,但使用查詢對象。
+0

您可以構建一個查詢VS/Web Access並將其保存到文件,並檢查使用的WIQL,然後在您的應用程序中使用它。 – DaveShaw

+0

@DaveShaw你可以擴展嗎?如何將查詢保存到文件? – AngryHacker

+0

文件,另存爲....在視覺工作室 – DaveShaw

回答

7

我沒有一個快速測試方法,但根據msdn,可以在查詢中使用Under比較運算符。但是,我不確定在where子句中使用哪個字段與迭代名稱進行比較。也許像這樣:

select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] 
from WorkItems 
where 
    [System.TeamProject] = 'VieroSAT' 
    and [System.State] = 'Dev' 
    and [System.IterationPath] Under 'Iteration1' 
order by [System.Id] 
+0

此查詢返回一個錯誤,指出錯誤是由[工作項] – AngryHacker

+0

造成的。這就是我不確定的字段應該是什麼。我似乎無法找到可用於查詢的字段列表中的任何內容。 – vlad

+0

@AngryHacker基於DaveShaw的評論,請嘗試以下操作:[System.AreaId] = 15或[System.NodeName] ='Iteration1' – vlad

相關問題