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