estamos vinculando Iteraciones dentro de TFS a un sistema externo para rastrear proyectos a través de toda la compañía. En el pasado, estábamos vinculando usando IterationPath en un proyecto TFS, pero el problema es que las personas cambian el nombre de estos IterationPaths a medida que avanzan los proyectos, y el enlace se pierde. Entonces, después de algunas investigaciones, estoy pensando en hacer los enlaces usando el IterationID. IterationID en TFSWarehouse NO es lo mismo que IterationID en la tabla WorkItemTracking, y parece que no puedo encontrar una forma fácil de encontrar el IterationID de un IterationPath. ¿Alguien tiene alguna idea de cómo podemos lograr esto?Encontrar IterationID en TFS
Respuesta
Usaría el complemento powershell de las últimas herramientas eléctricas TFS para esto.
> $tfs = Get-TfsServer <name> -all
> $tfs.WIT.Projects | % { $_.IterationRootNodes } | ft -auto id, path
Id Path
-- ----
100 Test-ConchangoV2\Release 1\Sprint 1
92 Test-ConchangoV2\Release 1\Sprint 2
97 Test-ConchangoV2\Release 1\Sprint 3
91 Test-ConchangoV2\Release 1\Sprint 4
94 Test-ConchangoV2\Release 1\Sprint 5
93 Test-ConchangoV2\Release 1\Sprint 6
96 Test-ConchangoV2\Release 2\Sprint 1
90 Test-ConchangoV2\Release 2\Sprint 2
98 Test-ConchangoV2\Release 2\Sprint 3
99 Test-ConchangoV2\Release 3\Sprint 1
95 Test-ConchangoV2\Release 3\Sprint 2
89 Test-ConchangoV2\Release 3\Sprint 3
bien - después de algo de investigación más, encontró el siguiente código que itera a través de todas las iteraciones, por lo que usar un subconjunto de esto, voy a conseguir lo que necesitaba :)
using System;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;
namespace TFSIterationList
{
class Program
{
static void Main(string[] args)
{
string tfsServer = "tfs";
string tfsProject = "Project Name";
TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(tfsServer);
WorkItemStore store = new WorkItemStore(tfsServer);
PrintTreeNodeCount(store, tfsProject);
}
private static void PrintTreeNodeCount(WorkItemStore store, string tfsProject)
{
int iterationNodeCount = 0;
NodeCollection rootNodeCollection = store.Projects[tfsProject].IterationRootNodes;
GetChildNodeCount(rootNodeCollection, ref iterationNodeCount);
Console.WriteLine(tfsProject + " Iteration nodes : " + iterationNodeCount);
}
private static void GetChildNodeCount(NodeCollection nodeCollection, ref int nodeCount)
{
nodeCount += nodeCollection.Count;
for (int i = 0; i < nodeCollection.Count; i++)
{
Console.WriteLine(nodeCollection[i].Id + " : " + nodeCollection[i].Path);
// Console.WriteLine(nodeCollection[i].Name);
if (nodeCollection[i].ChildNodes.Count > 0)
{
// Recursively walk through the child nodes
GetChildNodeCount(nodeCollection[i].ChildNodes, ref nodeCount);
}
}
}
}
}
¿Esto realmente le da la identificación de iteración con la que puede consultar? – sonicblis
si quieren para imprimir todas las Áreas de TFS continuación, cambie la línea siguiente:
de: .IterationRootNodes NodeCollection rootNodeCollection = store.Projects [tfsProject];
a: NodeCollection rootNodeCollection = store.Projects [tfsProject] .AreaRootNodes;
gracias por el código fue útil en mi extremo.
Esto también se puede lograr utilizando el Idioma de consulta de elementos de trabajo (WIQL on MSDN).
Con WIQL, puede consultar TFS. Usé C#, pero creo que esto funciona con la mayoría de los lenguajes .NET.
WorkItemStore workItemStore = (WorkItemStore)projectCollection.GetService(typeof(WorkItemStore));
WorkItemCollection queryResults = workItemStore.Query(
"Select [System.IterationID], [System.IterationPath] " +
"From WorkItems ORDER BY [System.IterationID]");
Se puede encontrar una iterationID específica mediante la adición de una cláusula donde a su cadena de consulta:
+ " Where [System.IterationPath] = 'Path'");
Los queryResults pueden ser vistas por iteración a través de ellos:
foreach (WorkItem workitem in queryResults)
{
Console.WriteLine(workitem.IterationID);
}
- 1. TFS: ¿Cómo encontrar archivos sin seguimiento en un espacio de trabajo TFS?
- 2. Unified Diff en TFS
- 3. Autenticación en TFS 2010
- 4. Sucursales huérfanas en TFS
- 5. Fusiona dos ramas TFS con git tfs
- 6. TFS ¿TFS todavía necesita archivos .vspcc?
- 7. ¿Dónde registra deuda técnica en TFS?
- 8. TFS Webservice Documentation
- 9. ¿Alguien puede encontrar la opción "Unshelve" de TFS en Visual Studio 2012?
- 10. ¿Cómo puedo encontrar todas las etiquetas para una subcarpeta de proyecto TFS en particular?
- 11. Enlaces simbólicos en TFS 2010 Source Control?
- 12. TFS: comparar conjuntos de cambios
- 13. ¿Cómo resuelvo conflictos en TFS?
- 14. ¿Hay confirmaciones locales en TFS?
- 15. ¿Qué falta en TFS Express?
- 16. Cómo "ordenar" tareas en TFS
- 17. ¿Qué es estanterías en TFS?
- 18. Branching vs. Shelves en TFS
- 19. Crear un parche con TFS
- 20. upgrade TFS 2010 y TFS 2012 RC to TFS 2012 final
- 21. Git-Tfs: ¿Un conjunto de cambios TFS por Git Commit?
- 22. Obtenga todas las carpetas de TFS usando TFS SDK
- 23. TFS Burn down charts
- 24. TFS 2012 Cartera priorización
- 25. TFS Permisos Branch
- 26. TFS History Lost
- 27. Comandos TFS vs SVN
- 28. TFS y proyectos compartidos en soluciones múltiples
- 29. TFS - cómo crear ramas
- 30. TFS Recomendación de ramificación
Gracias - ¡descargará y echará un vistazo! Si se puede hacer a través de Powershell, debería haber una forma de hacerlo a través del SDK. Esta herramienta de enlace es una aplicación ASP.NET, por lo que me encantaría hacerlo en ASP.NET. – Kolchy
Tuvo un juego, y lo anterior solo muestra la iteración que tiene 2 niveles de profundidad (por ejemplo, Nombre del cliente \ Iteración de raíz \ Iteración del niño). No muestra Iteraciones de raíz o Iteraciones que son hijos de niños ... – Kolchy
¿es solo este 2015? Acabo de descargar la última TFS Power Tools 2013 del 2015-04-13 y esos objetos no están disponibles. TFS Power Tools 2015 implica que funcionará con Team Explorer 2015, pero no pude lograr que funcionara. – rob