Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C获取每个工作项的TFS看板栏_C#_Tfs_Workitem_Kanban - Fatal编程技术网

C# C获取每个工作项的TFS看板栏

C# C获取每个工作项的TFS看板栏,c#,tfs,workitem,kanban,C#,Tfs,Workitem,Kanban,我有我的WorkItemStore收藏。我需要对其中的每个工作项执行操作。当我遍历时,我需要获取它所在的BoardColumn。很简单,但我很难弄清楚如何让工作项告诉我它是BoardColumn // Get our WorkItem Store TfsTeamProjectCollection projectCollection = GetTfsProjectCollection(tfsCollectionUri); WorkItemStore

我有我的WorkItemStore收藏。我需要对其中的每个工作项执行操作。当我遍历时,我需要获取它所在的BoardColumn。很简单,但我很难弄清楚如何让工作项告诉我它是BoardColumn

        // Get our WorkItem Store
        TfsTeamProjectCollection projectCollection = GetTfsProjectCollection(tfsCollectionUri);
        WorkItemStore workItemStore = (WorkItemStore)projectCollection.GetService(typeof(WorkItemStore));

        // Run a query for all Tasks on the "New Creative Work" Board.
        WorkItemCollection queryResults = workItemStore.Query(
            "Select [State], [Title] " +
            "From WorkItems " +
            "Where[System.AreaPath] = '<MySysAreaPath>' " +
            "AND[System.BoardLane] = '<MyBoardLane>'" +
            "AND[System.State] Does Not Contain 'Completed'");

        foreach(WorkItem item in queryResults)
        {
            string myBoardColumn = item[DO NOT KNOW WHAT GOES HERE]...
            //DO Stuff > Update db record
        }

非常感谢您的帮助

最简单的方法是将TFS升级到TFS 2015 Update 1及更高版本,正如在TFS 2015.1及更高版本中一样,已在工作项查询中启用了Board Column字段。您可以在工作项查询中轻松查询和显示看板字段

要获取查询中每个工作项的TFS Board列字段,请参阅下面的代码段:

using Microsoft.TeamFoundation.WorkItemTracking.Client;
using Microsoft.TeamFoundation.Client;
using System;

namespace GetWorkItemField
{
    class Program
    {
        static void Main(string[] args)
        {
            var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfsserver:8080/tfs/teamprojectcollection"));
            var service = tfs.GetService<WorkItemStore>();
            string workItemQueryString = "Select Id, Title From WorkItems Where [System.TeamProject] = 'TeamProject'";
            var workItemQuery = new Query(service, workItemQueryString);
            WorkItemCollection queryResults = workItemQuery.RunQuery();

            foreach (WorkItem item in queryResults)
            {
                var t = item.Fields["System.BoardColumn"];
                Console.WriteLine("{0}: {1}", item.Title, t.Value);
            }

        }
    }
}

最简单的方法是将TFS升级到TFS 2015 Update 1及更高版本,正如在TFS 2015.1及更高版本中一样,已在工作项查询中启用了Board Column字段。您可以在工作项查询中轻松查询和显示看板字段

要获取查询中每个工作项的TFS Board列字段,请参阅下面的代码段:

using Microsoft.TeamFoundation.WorkItemTracking.Client;
using Microsoft.TeamFoundation.Client;
using System;

namespace GetWorkItemField
{
    class Program
    {
        static void Main(string[] args)
        {
            var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfsserver:8080/tfs/teamprojectcollection"));
            var service = tfs.GetService<WorkItemStore>();
            string workItemQueryString = "Select Id, Title From WorkItems Where [System.TeamProject] = 'TeamProject'";
            var workItemQuery = new Query(service, workItemQueryString);
            WorkItemCollection queryResults = workItemQuery.RunQuery();

            foreach (WorkItem item in queryResults)
            {
                var t = item.Fields["System.BoardColumn"];
                Console.WriteLine("{0}: {1}", item.Title, t.Value);
            }

        }
    }
}

您查询的是什么版本的TFS?您好Dave,我使用的是TFS 2015您查询的是什么版本的TFS?您好Dave,我使用的是TFS 2015谢谢您的评论。我有TFS 2015,我知道我可以对BoardColumn进行查询,但这样我就必须枚举列。但是,这不是最好的选择,因为列名可能会更改,然后必须更新代码。最佳的方法是将我所有的工作项都放在黑板上,然后当我浏览每一个工作项时,询问工作项在查询时属于哪一列。你知道有没有办法做到这一点吗?对不起,如果我误解了。谢谢你的评论。我有TFS 2015,我知道我可以对BoardColumn进行查询,但这样我就必须枚举列。但是,这不是最好的选择,因为列名可能会更改,然后必须更新代码。最佳的方法是将我所有的工作项都放在黑板上,然后当我浏览每一个工作项时,询问工作项在查询时属于哪一列。你知道有没有办法做到这一点吗?对不起,如果我误解了。