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
Tfs 获取工作项下所有项的WIQL查询_Tfs_Wiql - Fatal编程技术网

Tfs 获取工作项下所有项的WIQL查询

Tfs 获取工作项下所有项的WIQL查询,tfs,wiql,Tfs,Wiql,我正在寻找一个查询,在那里我可以从一个区域路径返回所有工作项及其关系 例如:项目1 我需要所有功能化的所有Userstories映射到它所有工作项和Bug映射到Userstories 简言之,如果我从对象中获取一个bug,我需要一些类似于父id的东西,以便与userstory匹配 string query1 = " SELECT * FROM WorkItemLinks " + " WHERE ( [System.IterationPath] Under

我正在寻找一个查询,在那里我可以从一个区域路径返回所有工作项及其关系

例如:项目1

我需要所有功能化的所有Userstories映射到它所有工作项和Bug映射到Userstories

简言之,如果我从对象中获取一个bug,我需要一些类似于父id的东西,以便与userstory匹配

string query1 = " SELECT * FROM WorkItemLinks " +
                    " WHERE ( [System.IterationPath] Under 'iteration1' )" +
                    " AND ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' )" +
                    " ORDER BY [Microsoft.VSTS.Scheduling.StartDate]";
下面是一个错误

An exception of type 'Microsoft.TeamFoundation.WorkItemTracking.Client.ValidationException' occurred in Microsoft.TeamFoundation.WorkItemTracking.Client.dll but was not handled in user code

Additional information: TF51005: The query references a field that does not exist. The error is caused by «[System.IterationPath]».
当我检查dll是否正确引用时,当我像这样重新编写查询时,查询工作正常

 string query = " SELECT * FROM WorkItems"+
                           " WHERE  ( [System.IterationPath] Under 'iteration1' )" +
                           //" AND  ([System.State] = 'Active' OR  [System.State] = 'Assessed' ) "+
                           //" AND  ( [Microsoft.VSTS.Scheduling.StartDate] <= '09/13/2017' AND  [Microsoft.VSTS.Scheduling.FinishDate] >= '09/13/2017' )"+
                           " ORDER BY [Microsoft.VSTS.Scheduling.StartDate]";
string query=“从工作项中选择*+
“其中('iteration1'下的[System.IterationPath])”+
//“和([System.State]=“活动”或[System.State]=“已评估”)”+
//“和([Microsoft.VSTS.Scheduling.StartDate]=“2017年9月13日”)”+
“按[Microsoft.VSTS.Scheduling.StartDate]订购”;

但是这个查询结果并没有给出这样的关系:如果一个工作项作为子项映射到另一个工作项,那么我需要工作项对象中的父id。如何得到它。提前谢谢

您可以尝试以下查询:

为项目安装Nuget软件包

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

namespace _0925_WIQL
{
    class Program
    {
        static void Main(string[] args)
        {
            TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(
                  new Uri("http://server:8080/tfs/CollectionLC"));
            WorkItemStore workItemStore = (WorkItemStore)tpc.GetService(typeof(WorkItemStore));


            string query1= " SELECT * FROM WorkItemLinks " +
                    " WHERE ( Source.[System.IterationPath] Under 'TeamProject\\Iteration 1' )" +
                    " AND ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' )" +
                    " ORDER BY [Microsoft.VSTS.Scheduling.StartDate]";

            Query query = new Query(workItemStore, query1);
            WorkItemLinkInfo[] witLinkInfos = query.RunLinkQuery();

            foreach (WorkItemLinkInfo witinfo in witLinkInfos)
            {

                .......
            }
此外,您还可以使用。如果要从特定子工作项(ID)获取所有父工作项(ID),可以使用以下WIQL:

SELECT                      
        [System.Id],
        [System.WorkItemType],
        [System.Title],
        [System.AssignedTo],
        [System.State]
FROM workitemLinks
WHERE ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward')
AND ([Target].[System.Id] = 25)
ORDER BY [System.Id]
MODE (Recursive, ReturnMatchingChildren)

您可以尝试以下查询:

为项目安装Nuget软件包

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

namespace _0925_WIQL
{
    class Program
    {
        static void Main(string[] args)
        {
            TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(
                  new Uri("http://server:8080/tfs/CollectionLC"));
            WorkItemStore workItemStore = (WorkItemStore)tpc.GetService(typeof(WorkItemStore));


            string query1= " SELECT * FROM WorkItemLinks " +
                    " WHERE ( Source.[System.IterationPath] Under 'TeamProject\\Iteration 1' )" +
                    " AND ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' )" +
                    " ORDER BY [Microsoft.VSTS.Scheduling.StartDate]";

            Query query = new Query(workItemStore, query1);
            WorkItemLinkInfo[] witLinkInfos = query.RunLinkQuery();

            foreach (WorkItemLinkInfo witinfo in witLinkInfos)
            {

                .......
            }
此外,您还可以使用。如果要从特定子工作项(ID)获取所有父工作项(ID),可以使用以下WIQL:

SELECT                      
        [System.Id],
        [System.WorkItemType],
        [System.Title],
        [System.AssignedTo],
        [System.State]
FROM workitemLinks
WHERE ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward')
AND ([Target].[System.Id] = 25)
ORDER BY [System.Id]
MODE (Recursive, ReturnMatchingChildren)

谢谢你的回答。但是query1仍然不工作,并且在Microsoft.TeamFoundation.WorkItemTracking.Client.ValidationException中出现了类似“Microsoft.TeamFoundation.WorkItemTracking.Client.ValidationException”类型的异常,但未在user.dll中处理code@AJI我已更新了上述答案中的查询1,请使用更新后的查询1重试,确保您使用了“非常感谢您”更新的代码,这些代码工作正常。因为目标Id是当前工作项,而源Id是父Id。现在,由于它是从工作项链接获取的,所以我只能获取很少的项。是否有任何方法可以加入工作项查询和工作项链接查询,以获得一个结果,该结果包含工作项的所有信息,如分配给总小时数、完成小时数和剩余小时数等,以及源Id。谢谢much@AJI我们不能做到这一点,wiql不像sql。谢谢你的回答。但是query1仍然不工作,并且在Microsoft.TeamFoundation.WorkItemTracking.Client.ValidationException中出现了类似“Microsoft.TeamFoundation.WorkItemTracking.Client.ValidationException”类型的异常,但未在user.dll中处理code@AJI我已更新了上述答案中的查询1,请使用更新后的查询1重试,确保您使用了“非常感谢您”更新的代码,这些代码工作正常。因为目标Id是当前工作项,而源Id是父Id。现在,由于它是从工作项链接获取的,所以我只能获取很少的项。是否有任何方法可以加入工作项查询和工作项链接查询,以获得一个结果,该结果包含工作项的所有信息,如分配给总小时数、完成小时数和剩余小时数等,以及源Id。谢谢much@AJI我们不能做到这一点,wiql不像sql。