stiamo collegando le iterazioni all'interno di TFS a un sistema esterno per il monitoraggio dei progetti attraverso l'intera azienda. In passato, stavamo collegando utilizzando IterationPath in un progetto TFS, ma il problema è che le persone rinominano questi IterationPath mentre i progetti procedono e il collegamento viene perso. Quindi, dopo alcune ricerche, sto pensando di fare il collegamento usando l'IterationID. L'IterationID nella TFSWarehouse NON è uguale all'IterationID nella tabella WorkItemTracking e non riesco a trovare un modo semplice per trovare IterationID di IterationPath? Qualcuno ha idea di come possiamo essere in grado di raggiungere questo obiettivo?Trovare IterationID in TFS
risposta
Utilizzare lo snap-in PowerShell dagli ultimi Power Tools TFS per questo.
> $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
OK - dopo qualche ulteriore scavo, ha trovato il codice qui sotto che scorre attraverso tutte le iterazioni, in modo da utilizzare un sottoinsieme di questo, mi metterò quello che mi serviva :)
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);
}
}
}
}
}
Questo ti dà effettivamente l'ID di iterazione con cui puoi interrogare? – sonicblis
se si desidera per stampare tutti i TFS Aree quindi modificare la riga seguente:
da: NodeCollection rootNodeCollection = store.Projects [tfsProject] .IterationRootNodes;
a: NodeCollection rootNodeCollection = store.Projects [tfsProject] .AreaRootNodes;
grazie per il codice è stato utile alla mia fine.
Questo può essere ottenuto anche utilizzando il linguaggio di interrogazione delle voci di lavoro (WIQL on MSDN).
Con WIQL, è possibile interrogare TFS. Ho usato C#, ma credo che funzioni con la maggior parte/tutti i linguaggi .NET.
WorkItemStore workItemStore = (WorkItemStore)projectCollection.GetService(typeof(WorkItemStore));
WorkItemCollection queryResults = workItemStore.Query(
"Select [System.IterationID], [System.IterationPath] " +
"From WorkItems ORDER BY [System.IterationID]");
Si potrebbe trovare un iterationID specifica con l'aggiunta di una clausola dove la stringa di query:
+ " Where [System.IterationPath] = 'Path'");
I queryResults può essere vista da iterazione attraverso di loro:
foreach (WorkItem workitem in queryResults)
{
Console.WriteLine(workitem.IterationID);
}
- 1. Come posso trovare tutti i file estratti in TFS 2010?
- 2. TFS - Errore "Impossibile trovare la parte del percorso"
- 3. Impossibile trovare lo spazio dei nomi: creazione utilizzando TFS
- 4. TFS distribuzione per errore Azure: non riesce a trovare ClientPerfCountersInstaller.exe
- 5. Filiali orfani in TFS
- 6. Unified Diff in TFS
- 7. TFS: creare un nuovo progetto da uno esistente in TFS
- 8. Unisci due rami TFS con git tfs
- 9. Migrazione da TFS 2010 a TFS 2012
- 10. Unshelving in TFS: cosa significa?
- 11. Rollback un changeset in tfs
- 12. Richiedi richiesta pull in TFS
- 13. Qualcuno può trovare l'opzione "Unshelve" di TFS in Visual Studio 2012?
- 14. VS & TFS: check-in come nuovo ramo
- 15. Più query "Valore" in TFS 12.0
- 16. Devo evitare fusioni senza fondamento in TFS?
- 17. TFS e progetti condivisi in più soluzioni
- 18. Scaffalature in sospeso Modifiche in TFS
- 19. aggiornamento TFS 2010 e TFS 2012 RC a TFS 2012 finale
- 20. TFS TFS ha ancora bisogno di file .vspcc?
- 21. ci spostando le collezioni da TFS 2010 a TFS 2012
- 22. Come migrare da TFS ospitato a TFS locale?
- 23. Forking using TFS Git
- 24. TFS Masterizza grafici
- 25. Storia TFS persa
- 26. Branching e database TFS
- 27. C# 6.0 TFS Builds
- 28. Risorse API TFS 2010
- 29. TFS: confronto dei changeset
- 30. Query TFS per autorizzazioni
Grazie - scaricherà e dare un'occhiata! Se può essere fatto attraverso Powershell, ci dovrebbe essere un modo per farlo attraverso l'SDK? Questo strumento di collegamento è un'applicazione ASP.NET, quindi mi piacerebbe farlo in ASP.NET. – Kolchy
Ha avuto una riproduzione e il precedente mostra solo Iterazione con profondità di 2 livelli (ad es. Nome client \ Iterazione dei root \ Iterazione dei bambini). Non mostra Root Iterations o Iterations che sono figli di bambini ... – Kolchy
è solo questo 2015? Ho appena scaricato gli ultimi Power Tools TFS 2013 del 2015-04-13 e tali oggetti non sono disponibili. TFS Power Tools 2015 implica che funzionerà con Team Explorer 2015 ma non ho potuto farlo funzionare. – rob