我正在编写一个需要访问TFS工作项模板的所有修订版的工具。
Workitem有一个Revisons集合,以及返回修订数量的Rev属性。
当我尝试通过集合进行foreach时,即使它在我的测试工作项中包含6个“条目”,该集合也是空的。
要解决此问题,我使用GetWorkItem(WorkItemID,RevisionID),在for循环中递增修订ID以获取修订。似乎很疯狂,我必须这样做,并且那里的集合不包含它应该的东西。
我在这里遗漏了什么,或者这只是TFS客户端API中的一个错误。
答案 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();
}
}