2009-06-19 17 views
1

私は、TFSワークアイテムテンプレートのすべてのリビジョンにアクセスする必要があるツールを作成しています。TFS WorkItemリビジョンコレクションにデータを埋め込む

Workitemには、Revisonsコレクションと、リビジョン数を返すRevプロパティがあります。

私はテストワークアイテムに6個の "エントリ"が含まれていても、コレクションを通してforeachを実行しようとすると、コレクションは空です。

これを回避するには、GetWorkItem(WorkItemID、RevisionID)を使用して、forループのリビジョンIDをインクリメントしてリビジョンを取得します。それは私がこれを行う必要があり、それが想定されているものが含まれていないコレクションが狂っているようだ。

私はここに何か不足していますか、これは単にTFSクライアントAPIのバグです。

答えて

2

多くの掘り出しの後、作業項目のすべてのリビジョンを取得する場合は、明示的にリビジョン(2)をロードする必要があります。これにより、リビジョンコレクションはかなり大きくなります役に立たない。

0

作業項目の取得方法によっては、作業項目が部分的にしか読み込まれない場合があります。リビジョンコレクションにアクセスする前に、作業項目でOpenメソッドを呼び出してみてください。

+0

openを呼び出してもコレクションに入力されません。 –

-1

Microsoft.TeamFoundation.Controls.PickWorkItemsControlを使用して、必要な作業項目を選択しています。その後、レバレッジ・コレクターインは完成しました。おそらくこれが役に立ちます:

// 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

ここで作業項目を取得していますか?私はsourceControl.QueryHistoryでファイルのバージョン履歴を取得していた時期を知っています。チェンジセットの変更を取得するために、自分のパラメータ(変更を含むbool)をtrueに設定する必要がありました。

関連する問題