2012-01-16 8 views
5

Quiero crear un nuevo elemento de trabajo en TFS utilizando el SDK, y me gustaría establecer las estimaciones de esfuerzo del elemento. Mi código en el momento es el siguienteEstablecer estimaciones de esfuerzo a través del SDK del elemento de trabajo TFS

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

Pero no parece haber nada en la interfaz de WorkItem la que me permite establecer una estimación esfuerzo. ¿Alguien sabe cómo se hace esto?

Respuesta

7

Resulta que se hace utilizando el operador [] en el objeto 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

También puede consultar los campos usando su 'nombre de referencia', p. Ej. 'Original Estimate' = 'Microsoft.VSTS.Scheduling.OriginalEstimate'. –

+2

Modifiqué la respuesta y agregué 'nuevo UICredentialsProvider()' a la llamada GetTeamProjectCollection(). Esto mostrará un aviso de inicio de sesión si el usuario actual no tiene acceso. –

+1

Además, en lugar de usar workItemService.BatchSave(), si solo está guardando un elemento de trabajo, también puede usar item.Save(). Tenga cuidado al usar BatchSave(), ya que obtiene una matriz de errores que debe manejar, de lo contrario, un elemento de trabajo guardado 'silenciosamente' fallará. –

Cuestiones relacionadas