【问题标题】:How to query TFS work Items by their revisions fields如何通过修订字段查询 TFS 工作项
【发布时间】:2016-06-17 17:04:25
【问题描述】:

如何通过使用修订字段查询 WorkItem 存储来获取 WorkItem 集合。

  WorkItemCollection WIC = WIS.Query(
               " SELECT * " +
               " FROM WorkItems " +
               " WHERE  [System.TeamProject]='project1' AND [Work Item Type]='Bug' AND [System.Revision.ChangedBy]=@Me  ORDER BY [System.WorkItemType], [System.Id]");

我需要一个这样的工作项集合,但是在 [System.Revision.ChangedBy] 处生成的错误

有什么方法可以得到一个工作项集合,他们的修订版本由=@me 改变

即,如果一个工作项的修订版至少有一条记录由我更改,我需要它在我的工作项集合中

我尝试了很多方法,但还没有找到解决方案。

我尝试获取所有工作项,然后尝试查找每个工作项的修订值,但执行需要很长时间。这就是为什么我需要在获取 workItem 集合时过滤它们,

谢谢

【问题讨论】:

    标签: c# tfs tfs-workitem


    【解决方案1】:

    不,您不能在 WIQL 脚本中使用“System.Revision.ChangedBy”。而且你也不能在 API 中使用“@me”宏,它只能在 TFS Web Portal 或 Team Explorer 中使用。

    实现你想要的功能的方法就像你说的那样,首先通过WIQL获取工作项,然后检查所有它们的修订版。一些代码供您参考:

            string tfsurl = "http://xxxxxxxxxx/";
            TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(tfsurl));
            WorkItemStore wis = ttpc.GetService<WorkItemStore>();
            WorkItemCollection wic = wis.Query(" SELECT * " + " FROM WorkItems " + "WHERE  [System.TeamProject]='GitBuildRelease' AND [Work Item Type]='Bug'");
            List<WorkItem> wies = new List<WorkItem> { };
            foreach (WorkItem wi in wic)
            {
                foreach (Revision rev in wi.Revisions)
                {
                    if (rev.Fields["Changed By"].Value.ToString() == "yourdisplayname")
                    {
                        wies.Add(rev.WorkItem);
                        break;
                    }
                }
            }
    

    【讨论】:

    • 这就是我开发的,问题是当没有工作项增加时它太慢了,反正thnks
    猜你喜欢
    • 2010-11-25
    • 1970-01-01
    • 2017-01-26
    • 2011-03-25
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    相关资源
    最近更新 更多