TFS查询使用模式(可能包含)不;返回所有顶级工作项”;当通过API运行时

TFS查询使用模式(可能包含)不;返回所有顶级工作项”;当通过API运行时,tfs,wiql,Tfs,Wiql,我在TFS 2013中创建了一个查询,如下所示: 选择“工作项和直接链接”而不是“平面列表” 团队项目=@Project 删除源工作项的所有其他子句 删除所有“链接工作项的筛选器” 选择单选按钮“返回所有顶级工作项” 选择单选按钮“返回所选链接类型” 勾选“家长” 在TFS中运行此查询时,结果包含满足源条件的所有工作项,无论它们是否具有链接 以下WIQL由上述查询生成(如果我另存为文件): 但是,当我运行以下powershell时,生成的SourceID仅包含具有父链接的工作项: $Coll

我在TFS 2013中创建了一个查询,如下所示:

  • 选择“工作项和直接链接”而不是“平面列表”
  • 团队项目=@Project
  • 删除源工作项的所有其他子句
  • 删除所有“链接工作项的筛选器”
  • 选择单选按钮“返回所有顶级工作项”
  • 选择单选按钮“返回所选链接类型”
  • 勾选“家长”
在TFS中运行此查询时,结果包含满足源条件的所有工作项,无论它们是否具有链接

以下WIQL由上述查询生成(如果我另存为文件):

但是,当我运行以下powershell时,生成的SourceID仅包含具有父链接的工作项:

$CollectionUrl = "myCollectionUrl"
$ProjectName = "myProjectName"
    'Microsoft.TeamFoundation.Client', 'Microsoft.TeamFoundation.Common', 'Microsoft.TeamFoundation.WorkItemTracking.Client' |
    ForEach-Object {
        Add-Type -AssemblyName "$_, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    }        
    [Microsoft.TeamFoundation.Client.TfsTeamProjectCollection] $tfs = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($CollectionUrl)
    [Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore]$wis = `
        New-Object -TypeName Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore  `
                    -ArgumentList ($tfs, [Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStoreFlags]::BypassRules)        
    [string] $WIQL = "SELECT [System.Id], [System.Links.LinkType], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] 
                        FROM WorkItemLinks 
                        WHERE ([Source].[System.TeamProject] = '$projectName') 
                        And ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Reverse') 
                        ORDER BY [System.Id] mode(MayContain)"

   $query = New-Object "Microsoft.TeamFoundation.WorkItemTracking.Client.Query" -ArgumentList $wis, $WIQL
    $workItemLinkInfo = $query.RunLinkQuery() 
    $workItemLinkInfo | out-gridview

为什么WIQL在通过API传递时的行为与通过UI执行时的行为不同?或者有人能看到我的错误吗?

运行PowerShell脚本得到的结果与工作项查询结果UI中的结果相同。您的PowerShell脚本没有问题。您是否介意再次检查您查询的是同一个团队项目集合和团队项目?我认为这是一个缓存问题;无法繁殖。
$CollectionUrl = "myCollectionUrl"
$ProjectName = "myProjectName"
    'Microsoft.TeamFoundation.Client', 'Microsoft.TeamFoundation.Common', 'Microsoft.TeamFoundation.WorkItemTracking.Client' |
    ForEach-Object {
        Add-Type -AssemblyName "$_, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    }        
    [Microsoft.TeamFoundation.Client.TfsTeamProjectCollection] $tfs = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($CollectionUrl)
    [Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore]$wis = `
        New-Object -TypeName Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore  `
                    -ArgumentList ($tfs, [Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStoreFlags]::BypassRules)        
    [string] $WIQL = "SELECT [System.Id], [System.Links.LinkType], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] 
                        FROM WorkItemLinks 
                        WHERE ([Source].[System.TeamProject] = '$projectName') 
                        And ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Reverse') 
                        ORDER BY [System.Id] mode(MayContain)"

   $query = New-Object "Microsoft.TeamFoundation.WorkItemTracking.Client.Query" -ArgumentList $wis, $WIQL
    $workItemLinkInfo = $query.RunLinkQuery() 
    $workItemLinkInfo | out-gridview