2009-06-19 17 views
1

Ich schreibe ein Tool, das auf alle Revisionen einer TFS-Arbeitselementvorlage zugreifen muss.Füllen der TFS-WorkItem-Revisionssammlung

Das Workitem verfügt über eine Revisons-Auflistung und Rev-Eigenschaft, die die Anzahl der Revisionen zurückgibt.

Wenn ich versuche, eine foreach durch die Sammlung, obwohl es 6 "Einträge" in meinem Test Arbeitselement enthält, ist die Sammlung leer.

Um dies zu umgehen, verwende ich die GetWorkItem (WorkItemID, RevisionID), erhöhen die Revisions-ID in einer for-Schleife, um die Revisionen zu erhalten. Es scheint verrückt, dass ich das tun muss, und dort Sammlung, die nicht enthält, was es soll.

Fehle ich hier etwas, oder ist das einfach ein Fehler in der TFS-Client-API.

Antwort

2

Nach vielen Ausgrabungen ist mir jetzt klar, dass Sie, wenn Sie alle Revisionen eines Arbeitselements abrufen möchten, explizit die gewünschte Revision (2) laden müssen, was die Revisionsauflistung ziemlich vereinfacht nutzlos.

0

Je nachdem, wie Sie das Arbeitselement abrufen, wird es möglicherweise nur teilweise geladen. Versuchen Sie, die Open-Methode für das Arbeitselement aufzurufen, bevor Sie auf die Revisions-Auflistung zugreifen.

+0

Der Aufruf von open füllt die Sammlung nicht. –

-1

Ich benutze das Microsoft.TeamFoundation.Controls.PickWorkItemsControl, um die Arbeitsaufgaben auszuwählen, die ich brauche. Danach ist das revionsCollectoin komplett. Vielleicht hilft das:

// select the workitems using the picker 
ArrayList workItems = _workItemPicker.Control.SelectedWorkItems(); 

// after that use a foreach and output all history included in each revision 
private void PrintHistory(WorkItem workitem) 
{ 

     RevisionCollection revisions = workitem.Revisions; 

     foreach (Revision revision in revisions) 
     { 
      String history = (String) revision.Fields["History"].Value; 
      Console.WriteLine("**** Revision {0}", revision.Fields["Title"], revision.Fields["Changed Date"]); 

      foreach (Field field in revision.Fields) 
      { 
       Console.WriteLine("* field {0}:{1} ", field.Name, field.Value); 
      } 

      Console.WriteLine("****"); 
      Console.WriteLine(); 
     } 

} 
0

Wo bekommen Sie das Workitem? Ich weiß, wenn ich Versionsgeschichte von Dateien mit sourceControl.QueryHistory bekam, musste ich einen meiner Parameter (bool einschließlich Änderungen) auf wahr setzen, um die Änderungen im Änderungssatz zu erhalten.