2012-01-16 3 views
5

Я хочу создать новый рабочий элемент в TFS с помощью SDK, и я хотел бы установить оценки усилий элемента. Мой код на данный момент выглядит следующим образомУстанавливать оценки усилий с помощью рабочего элемента TFS SDK

var coll = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://galaxy:8080/tfs/crisp")); 

    var workItemService = coll.GetService<WorkItemStore>(); 

    var parent = workItemService.GetWorkItem(parentWorkItemId); 

    WorkItemType workItemType =parent.Project.WorkItemTypes 
      .Cast<WorkItemType>() 
      .First(candidateType => candidateType.Name.Equals("Task")); 



    WorkItem item = workItemType.NewWorkItem(); 
    item.Title = work.Name; 


    //Set effort estimate here 

    workItemService.BatchSave(new WorkItem[]{ item }); 

Но не кажется, что будет что-либо на интерфейсе для WorkItem, который позволяет мне установить оценку усилий. Кто-нибудь знает, как это делается?

ответ

7

Оказывается, это делается с помощью оператора [] на объекте WorkItem.

var coll = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://galaxy:8080/tfs/crisp"), new UICredentialsProvider()); 

var workItemService = coll.GetService<WorkItemStore>(); 

var parent = workItemService.GetWorkItem(parentWorkItemId); 

WorkItemType workItemType =parent.Project.WorkItemTypes 
      .Cast<WorkItemType>() 
      .First(candidateType => candidateType.Name.Equals("Task")); 

WorkItem item = workItemType.NewWorkItem(); 
item.Title = "A name"; 

item["Original Estimate"] = duration.TotalHours; 
item["Completed Work"] = duration.TotalHours; 
item["Remaining Work"] = 0.0; 

int workItemId = item.Save(); 
+1

Вы также можете обратиться к полям, используя их «ссылочное имя», например. 'Original Estimate' = 'Microsoft.VSTS.Scheduling.OriginalEstimate'. –

+2

Я изменил ответ и добавил 'новый UICredentialsProvider()' к вызову GetTeamProjectCollection(). Это отобразит приглашение для входа, если у текущего пользователя нет доступа. –

+1

Кроме того, вместо использования workItemService.BatchSave() - если вы сохраняете только один рабочий элемент, вы также можете использовать item.Save(). Будьте осторожны при использовании BatchSave(), так как вы получаете массив ошибок, которые вы должны обрабатывать, иначе сохранение рабочего элемента будет «молча». –

Смежные вопросы