Wie Sie mit einer TFS-API 2013 alle Iterationspfade abrufen können

Ich benutze die TFS-API-Bibliotheken seit einiger Zeit und benutze den folgenden Code, wenn ich mit TFS 2010 eine Schnittstelle herstelle, um die Iterationspfade abzurufen (Code vondiese Seit) ...

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);
}

Wenn ich daran dachte, alle Iterationen in TFS 2013 zu bekommen, änderten sich die Dinge. In TFS 2013 hat sich das Konzept der Iterationen geringfügig geändert, und die API-Assemblys für TFS 2013 verfügen nicht überIterationRootNodes

Ich habe den folgenden Code verwendet, um Team-Iterationen zu erhalten, aber das ist teambasiert und nicht der vollständige Satz von Iterationen gegen das Projek

 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);

woBuildIterationTree sieht aus wie..

 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;
    }

Meine Frage ist.. Wie erhalte ich den vollständigen Iterationsbaum anstelle von teamspezifischen Iterationen für TFS 2013?

Teamspezifische Iterationen können so konfiguriert werden, dass sie über das Webportal über ein Kontrollkästchen für die Iteration angezeigt werden oder nicht.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage