【问题标题】:How to query a WorkItem based on TFS Branch如何根据 TFS 分支查询 WorkItem
【发布时间】:2016-08-05 15:04:43
【问题描述】:

我正在开发一种工具来显示特定项目分支的所有代码审查请求。现在,项目和相应的分支列表正在正确填充。但是,当我尝试在 WorkItemStore 上为 TeamProjectCollection 运行查询时,我相信我错误地引用了分支。

这是我在代码前面加载分支信息的方式:

var projName = ddlProjects.SelectedItem.ToString();

var vcs = tfs.GetService<VersionControlServer>();
var bos = vcs.QueryRootBranchObjects(RecursionType.Full);
var branchList = bos.Select(branch => branch.Properties.RootItem.Item).ToList();
var finalList = branchList.Where(b => b.Contains(projName)).ToList();
ddlBranches.DataSource = finalList;

这是我运行引发错误的查询的方式:

using (var tfs = new TfsTeamProjectCollection(new Uri(@"http://myTeamProjectCollectionURL")))
{
     var workItemStore = tfs.GetService<WorkItemStore>();
     var query = string.Format(@"SELECT *
                                 FROM WorkItems
                                 WHERE [System.TeamProject] = '{0}'
                                 and [System.IterationPath] under '{1}'
                                 and [System.WorkItemType] = 'Code Review Request'", ddlProjects.SelectedItem.ToString(), ddlBranches.SelectedItem.ToString());

     WorkItemCollection workItemCollection = workItemStore.Query(query);

这是查询产生的错误:

TF51011: The specified iteration path does not exist. The error is caused by «'$/ProjectName/ReleaseBranch1.0'».

再次,我假设我在查询中错误地引用了分支。有谁知道这样做的正确方法?提前感谢您提供的任何帮助!

【问题讨论】:

  • 迭代路径和分支是完全不相关的概念。您是否明确设置了迭代路径以匹配您的分支?
  • 我想的也差不多。不,据我所知,他们不是这样设置的。有没有办法在查询中引用分支,而不是迭代路径?

标签: c# tfs


【解决方案1】:

工作项是在团队项目而非项目下创建的。所以默认情况下没有对应Branch的字段。

要实现你想要的,你需要自定义一个字段来指定Branch path,那么你就有了这样的查询。

【讨论】:

  • 感谢您的回复!请原谅我的无知,但您介意向我展示如何完成此操作的示例吗?总的来说,我对 LINQ 查询和 TFS API 还是很陌生。再次感谢您提供的任何其他帮助!
  • 您可以使用TFS电动工具(visualstudiogallery.msdn.microsoft.com/…)添加字段,然后您可以在查询中找到自定义字段。参考这篇博客:amosdk.blogspot.sg/2010/09/…
猜你喜欢
  • 1970-01-01
  • 2011-08-13
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 2021-11-04
  • 2015-03-14
相关资源
最近更新 更多