Cómo obtener todas las rutas de iteración con una API TFS 2013
He estado usando las bibliotecas de API de TFS durante algún tiempo y he estado usando el siguiente código al interactuar con TFS 2010 para obtener las Rutas de iteración (código deesta página) ...
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);
}
Cuando estaba buscando obtener todas las iteraciones dentro de TFS 2013, las cosas cambiaron. En TFS 2013, el concepto de iteraciones cambió ligeramente y los ensamblados de API para TFS 2013 no tienenIterationRootNodes
He utilizado el siguiente código para obtener iteraciones del equipo, pero eso está basado en el equipo y no en el conjunto completo de iteraciones contra el proyecto ... (actualmente obtengo el primer equipo pero se puede codificar para obtener otros)
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);
dóndeBuildIterationTree
parece...
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;
}
Mi pregunta es... ¿Cómo obtengo el árbol de iteración completo en lugar de las iteraciones específicas del equipo para TFS 2013?
Las iteraciones específicas del equipo se pueden configurar para mostrar o no a través del portal web a través de una casilla de verificación contra la iteración.