填充TFS WorkItem修订版集合

时间:2009-06-19 03:16:04

标签: tfs

我正在编写一个需要访问TFS工作项模板的所有修订版的工具。

Workitem有一个Revisons集合,以及返回修订数量的Rev属性。

当我尝试通过集合进行foreach时,即使它在我的测试工作项中包含6个“条目”,该集合也是空的。

要解决此问题,我使用GetWorkItem(WorkItemID,RevisionID),在for循环中递增修订ID以获取修订。似乎很疯狂,我必须这样做,并且那里的集合不包含它应该的东西。

我在这里遗漏了什么,或者这只是TFS客户端API中的一个错误。

4 个答案:

答案 0 :(得分:2)

经过深入挖掘,我现在很清楚,如果你想得到一个工作项的所有修订版,你必须明确加载你想要的修订版(2),这使得修订版集合几乎无用

答案 1 :(得分:0)

根据您检索工作项的方式,它可能只是部分加载。在访问Revisions集合之前,尝试在工作项上调用Open方法。

答案 2 :(得分:0)

你在哪里获得工作项目?我知道当我使用sourceControl.QueryHistory获取文件的版本历史时,我必须将我的一个参数(bool include Changes)设置为true才能获得变更集中的更改。

答案 3 :(得分:-1)

我正在使用Microsoft.TeamFoundation.Controls.PickWorkItemsControl来选择我需要的工作项。之后,revsionsCollectoin是完整的。也许这会有所帮助:

// 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();
        }

}