c# - 通过完整路径和查询名称查询 TFS 存储/保存的查询(不在 'My Queries' 或 'Shared Queries' 中的查询)

标签 c# tfs

我正在尝试通过完整路径(比“我的查询”/“共享查询”更深)和查询名称来访问已保存的 TFS 查询。

场景是用户可以将路径添加到他们的团队目录,并将他们的工作项查询的名称添加到配置 xml 文件中。我读取了 xml 并获取了数据。

示例 XML

<Teams>
  <Team name ="MyTeam">
    <Query project="MyProj" queryfolder="Shared Queries/blah/blah2/MyTeamFolder" queryName="MyTeams WorkItems - All Workitems"/>
  </Team>
</Teams>

我希望使用“queryfolder”和“queryName”在 TFS 中查找查询 到目前为止,我所拥有的适用于根目录(“我的查询”/“共享查询”),但我无法弄清楚如何让某些东西适用于更深层次的路径。

这不起作用:

  QueryHierarchy queryRoot = workItemStore.Projects["MyProj"].QueryHierarchy;
                QueryFolder folder = (QueryFolder)queryRoot["Shared Queries/blah/blah2/MyTeamFolder"];
                QueryDefinition query = (QueryDefinition)folder["MyTeams WorkItems - All Workitems"];
                string queryResults = query.QueryText;

这将在查找文件夹时出错 QueryFolder folder = (QueryFolder)queryRoot[".."]

KeyNotFoundException

将文件夹更改为“共享查询”或“我的查询”,它能够找到该文件夹​​,但在尝试通过其名称查找查询时会出现相同的异常。正如预期的那样,如果查询位于根文件夹(共享/我的查询)中,它工作正常。

那么我该如何搜索比根文件夹更深的地方呢?

(到目前为止,所有互联网搜索都只产生了使用根文件夹的示例)

最佳答案

这种自递归方法会从查询树中找到你的查询(如果存在的话):

    static QueryDefinition GetQueryDefinitionFromPath(QueryFolder folder, string path)
    {
        return folder.Select<QueryItem, QueryDefinition>(item =>
        {
            return item.Path == path ?
                item as QueryDefinition : item is QueryFolder ?
                GetQueryDefinitionFromPath(item as QueryFolder, path) : null;
        })
        .FirstOrDefault(item => item != null);
    }

你的例子给出了,调用

  var myquery = GetQueryDefinitionFromPath( (QueryFolder)workItemStore.Projects["MyProj"].QueryHierarchy, "Shared Queries/blah/blah2/MyTeamFolder/MyTeams WorkItems - All Workitems" );

关于c# - 通过完整路径和查询名称查询 TFS 存储/保存的查询(不在 'My Queries' 或 'Shared Queries' 中的查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32101019/

相关文章:

c# - .Net Core 3 Blazor Server - 如何使用声明进行基本登录?

tfs - 从 TFS 2010 build 运行批处理文件

TFS 在 Visual Studio 2013 中重命名和删除文件很慢

c# - Azure 自动构建失败

azure - TFS 部署到 Azure 错误 : cannot find ClientPerfCountersInstaller. exe

visual-studio-2013 - 用于构建服务器的 Typescript 1.4 SDK?

c# - .NET 远程调试作为来自另一个域的另一个用户?

c# - 存储和更新外部 API 密码的最佳实践

c# - 在 .net core 的单元测试中使用和注入(inject) appsettings.json

c# - 如何在 MVC 中为具有多个属性的 View 模型添加验证错误?