¿Cómo cambiar el estado del flujo de trabajo del elemento de trabajo TFS recién creado a través de la API?

Estoy creando una aplicación de migración de elementos de trabajo de "algo" a TFS 2013, y quiero que los elementos de trabajo de TFS estén en los estados de flujo de trabajo correspondientes al sistema fuente. Por ejemplo, si el elemento de trabajo de origen está en estado "Cerrado", quiero que esté en estado "Hecho" en TFS.

He seguido consejos enEste artículo, lo que sugiere establecerBypassRules propiedad de laWorkItemStore oponerse atrue con el fin de poder configurarCreatedDate campo. Supongo que lo mismo se aplica a cambiar el estado del flujo de trabajo, ya que también requiere pasar por alto las reglas.

Entonces, probé lo siguiente:

// obtain collection and authenticate towards it
var collection = new TfsTeamProjectCollection(new Uri(_tfsUrl), cred);
collection.Authenticate();

// get the work item store object
var store = new WorkItemStore(collection, WorkItemStoreFlags.BypassRules);

// creating the work item
var workItem = new WorkItem(store.Projects[_tfsProjectName].WorkItemTypes["Product Backlog Item"]);

// setting some standard fields
workItem.Title = "some name";
workItem.Description = "some description";

// validating the work item
if (workItem.Validate().Count > 0)
{
   // throw validation rules violated
}

// saving the work item
workItem.Save();    

Como puede ver, esta muestra no viola ninguna regla de validación, yworkItem.Validate().Count devoluciones0. Pero la llamada aworkItem.Save() lanza la siguiente excepción:

Información adicional: TF26212: Team Foundation Server no pudo guardar sus cambios. Puede haber problemas con la definición del tipo de elemento de trabajo. Inténtalo de nuevo o contacta a tu administrador de Team Foundation Server.

Comprobé queBypassRules se establece entrue justo antes de la llamada aSave() método. Junto alworkItem.IsValid es tambiéntrue.

El hecho interesante es que si cambio la forma en que obtengo elWorkItemStore objeto, desde

var store = new WorkItemStore(collection, WorkItemStoreFlags.BypassRules);

a

var store = collection.GetService<WorkItemStore>();

¡Se puede ahorrar sin ningún problema! Pero en este caso no sé cómo configurar.BypassRules atrue. Esta propiedad es de solo lectura cuando elWorkItemStore el objeto se crea y recibo errores de validación si trato de establecer el paso del flujo de trabajo en algo diferente a "Nuevo".

Entonces, mi pregunta básica es:cómo crear elementos de trabajo en TFS a través de API y poder cambiarState campo en este nuevo elemento creado?

Respuestas a la pregunta(1)

Su respuesta a la pregunta