2012-01-16 25 views
5

Tôi muốn tạo một mục công việc mới trong TFS bằng cách sử dụng SDK, và tôi muốn thiết lập các ước tính nỗ lực của mục. Mã của tôi tại thời điểm này trông giống như thế nàyĐặt các ước lượng Nỗ lực thông qua TFS Work Item 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 }); 

Nhưng dường như không có bất kỳ điều gì trên giao diện cho WorkItem cho phép tôi đặt ước tính nỗ lực. Có ai biết làm thế nào điều này được thực hiện?

Trả lời

7

Biến nó được thực hiện bằng cách sử dụng toán tử [] trên đối tượng 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

Bạn cũng có thể tham khảo các trường bằng cách sử dụng 'tên tham chiếu', ví dụ: 'Ước tính ban đầu' = 'Microsoft.VSTS.Scheduling.OriginalEstimate'. –

+2

Tôi đã sửa đổi câu trả lời và thêm 'UICredentialsProvider() mới' vào cuộc gọi GetTeamProjectCollection(). Thao tác này sẽ hiển thị lời nhắc đăng nhập nếu người dùng hiện tại không có quyền truy cập. –

+1

Ngoài ra, thay vì sử dụng workItemService.BatchSave() - nếu bạn chỉ lưu một mục công việc, bạn cũng có thể sử dụng item.Save(). Hãy cẩn thận khi sử dụng BatchSave(), khi bạn nhận được một mảng các lỗi mà bạn phải xử lý, nếu không một mục công việc lưu sẽ 'âm thầm' không thành công. –

Các vấn đề liên quan