如何使用TFS API 2013获取所有迭代路径

阿克韦特

我使用TFS API库已有一段时间,并且在与TFS 2010交互以获取迭代路径时使用以下代码(此页中的代码)...

public IList<string> GetIterationPaths(Project project)
{
   List<string> iterations = new List<string>();
   foreach (Node node in project.IterationRootNodes)
      AddChildren(string.Empty, node, iterations);
   return iterations;
}

private void AddChildren(string prefix, Node node, List<string> items)
{
   items.Add(node.Path);
   foreach (Node item in node.ChildNodes)
      AddChildren(prefix + node.Name + "/", item, items);
}

当我希望在TFS 2013中获得所有迭代时,事情发生了变化。在TFS 2013中,迭代的概念略有更改,并且TFS 2013的API程序集没有IterationRootNodes

我已经使用以下代码获取团队迭代,但这是基于团队的,而不是针对项目的完整迭代...(目前正在获得第一团队,但可以进行编码以获取其他团队)

 var cred = new TfsClientCredentials(new WindowsCredential(), true);
 TfsTeamProjectCollection coll = new TfsTeamProjectCollection("{URI to SERVER}", cred);
 coll.EnsureAuthenticated();

 var teamConfig = coll.GetService<TeamSettingsConfigurationService>();
 var css = coll.GetService<ICommonStructureService4>();
 var project = css.GetProjectFromName(projectInfo.ProjectName);

 IEnumerable<TeamConfiguration> configs = teamConfig.GetTeamConfigurationsForUser(new[] { project.Uri.ToString() });
 TeamConfiguration team = configs.FirstOrDefault(x => x.ProjectUri == project.Uri.ToString());

 var iterations = BuildIterationTree(team, css);

这里BuildIterationTree看起来像...

 private IList<IterationInfo> BuildIterationTree(TeamConfiguration team, ICommonStructureService4 css)
    {
        string[] paths = team.TeamSettings.IterationPaths;

        var result = new List<IterationInfo>();

        foreach (string nodePath in paths.OrderBy(x => x))
        {
            var projectNameIndex = nodePath.IndexOf("\\", 2);
            var fullPath = nodePath.Insert(projectNameIndex, "\\Iteration");
            var nodeInfo = css.GetNodeFromPath(fullPath);
            var name = nodeInfo.Name;
            var startDate = nodeInfo.StartDate;
            var endDate = nodeInfo.FinishDate;

            result.Add(new IterationInfo
            {
                IterationPath = fullPath.Replace("\\Iteration", ""),
                StartDate = startDate,
                FinishDate = endDate,
            });
        }
        return result;
    }

我的问题是...我如何获得完整的迭代树,而不是针对TFS 2013的特定于团队的迭代?

可以将特定于团队的迭代配置为通过Web门户显示或不显示该迭代复选框。

埃里克

您的问题回答了我有关如何获取特定于团队的迭代的问题,因此,我能做的至少是提供可获取完整迭代层次结构的代码段。我想我最初是在此博客上找到此代码的

    public static void GetIterations(TfsTeamProjectCollection collection,
        ICommonStructureService4 css, ProjectInfo project)
    {
        TeamSettingsConfigurationService teamConfigService = collection.GetService<TeamSettingsConfigurationService>();
        NodeInfo[] structures = css.ListStructures(project.Uri);
        NodeInfo iterations = structures.FirstOrDefault(n => n.StructureType.Equals("ProjectLifecycle"));
        XmlElement iterationsTree = css.GetNodesXml(new[] { iterations.Uri }, true);

        string baseName = project.Name + @"\";
        BuildIterationTree(iterationsTree.ChildNodes[0].ChildNodes, baseName);
    }

    private static void BuildIterationTree(XmlNodeList items, string baseName)
    {
        foreach (XmlNode node in items)
        {
            if (node.Attributes["NodeID"] != null &&
                node.Attributes["Name"] != null &&
                node.Attributes["StartDate"] != null &&
                node.Attributes["FinishDate"] != null)
            {
                string name = node.Attributes["Name"].Value;
                DateTime startDate = DateTime.Parse(node.Attributes["StartDate"].Value, CultureInfo.InvariantCulture);
                DateTime finishDate = DateTime.Parse(node.Attributes["FinishDate"].Value, CultureInfo.InvariantCulture);

                // Found Iteration with start / end dates
            }
            else if (node.Attributes["Name"] != null)
            {
                string name = node.Attributes["Name"].Value;

                // Found Iteration without start / end dates
            }

            if (node.ChildNodes.Count > 0)
            {
                string name = baseName;
                if (node.Attributes["Name"] != null)
                    name += node.Attributes["Name"].Value + @"\";

                BuildIterationTree(node.ChildNodes, name);
            }
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用 TFS API 创建子迭代?

来自分类Dev

如何使用TFS API C#获取WIQL查询的所有有效字段?

来自分类Dev

TFS获取所有团队特定的迭代路径

来自分类Dev

如何从gitlab api获取特定提交的所有文件(路径)?

来自分类Dev

TFS API:如何使用C#从服务器路径获取本地映射路径?

来自分类Dev

使用TFS API时,如何在TFS 2013源代码管理中显示“分支”图标?

来自分类Dev

使用TFS REST API创建新的迭代

来自分类Dev

“如何使用 TFS 2018 API 从特定版本获取测试运行 ID”

来自分类Dev

使用TFS API获取更改的行

来自分类Dev

如何使用Facebook API获取附近的所有餐厅?

来自分类Dev

如何使用RubyZoho API获取所有对象

来自分类Dev

如何使用Bitbucket API获取所有拉取请求?

来自分类Dev

如何使用Facebook API获取附近的所有餐厅?

来自分类Dev

如何使用Bitbucket API获取所有拉取请求?

来自分类Dev

如何使用 zomato API 获取菜单的所有页面?

来自分类Dev

使用API(rbvmomi)获取所有VirtualMachines

来自分类Dev

使用API更新TFS 2013中工作项上的标签?

来自分类Dev

TFS 2013 API-检索对WI所做的所有更改

来自分类Dev

使用TFS Api,如何检索给定计划中可以将测试用例分配给所有测试人员的列表?

来自分类Dev

如何获取TFS 2013中所有用户的列表

来自分类Dev

如何通过API / Powershell获取TFS构建代理的列表?

来自分类Dev

TFS API:如何获取文件的历史记录?

来自分类Dev

如何从TFS Api获取测试结果trx文件(从vstest生成)

来自分类Dev

如何使用属性获取lxml中所有元素的路径

来自分类Dev

使用VSTS / TFS API获取项目类型(敏捷,Scrum,CMMI)

来自分类Dev

使用top-参数从TFS-API获取构建

来自分类Dev

使用 TFS REST API 获取测试结果/运行附件

来自分类Dev

如何使用flickr API为所有用户获取带有地理标签的照片?

来自分类Dev

使用TFS Api,如何创建测试用例?

Related 相关文章

  1. 1

    如何使用 TFS API 创建子迭代?

  2. 2

    如何使用TFS API C#获取WIQL查询的所有有效字段?

  3. 3

    TFS获取所有团队特定的迭代路径

  4. 4

    如何从gitlab api获取特定提交的所有文件(路径)?

  5. 5

    TFS API:如何使用C#从服务器路径获取本地映射路径?

  6. 6

    使用TFS API时,如何在TFS 2013源代码管理中显示“分支”图标?

  7. 7

    使用TFS REST API创建新的迭代

  8. 8

    “如何使用 TFS 2018 API 从特定版本获取测试运行 ID”

  9. 9

    使用TFS API获取更改的行

  10. 10

    如何使用Facebook API获取附近的所有餐厅?

  11. 11

    如何使用RubyZoho API获取所有对象

  12. 12

    如何使用Bitbucket API获取所有拉取请求?

  13. 13

    如何使用Facebook API获取附近的所有餐厅?

  14. 14

    如何使用Bitbucket API获取所有拉取请求?

  15. 15

    如何使用 zomato API 获取菜单的所有页面?

  16. 16

    使用API(rbvmomi)获取所有VirtualMachines

  17. 17

    使用API更新TFS 2013中工作项上的标签?

  18. 18

    TFS 2013 API-检索对WI所做的所有更改

  19. 19

    使用TFS Api,如何检索给定计划中可以将测试用例分配给所有测试人员的列表?

  20. 20

    如何获取TFS 2013中所有用户的列表

  21. 21

    如何通过API / Powershell获取TFS构建代理的列表?

  22. 22

    TFS API:如何获取文件的历史记录?

  23. 23

    如何从TFS Api获取测试结果trx文件(从vstest生成)

  24. 24

    如何使用属性获取lxml中所有元素的路径

  25. 25

    使用VSTS / TFS API获取项目类型(敏捷,Scrum,CMMI)

  26. 26

    使用top-参数从TFS-API获取构建

  27. 27

    使用 TFS REST API 获取测试结果/运行附件

  28. 28

    如何使用flickr API为所有用户获取带有地理标签的照片?

  29. 29

    使用TFS Api,如何创建测试用例?

热门标签

归档