2013-10-10 143 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

相关问题