Como alterar o estado do fluxo de trabalho do item de trabalho recém-criado do TFS por meio da API?

Estou criando um aplicativo de migração de item de trabalho de "algo" para o TFS 2013 e desejo que os itens de trabalho do TFS estejam em estados de fluxo de trabalho correspondentes como no sistema de origem. Por exemplo, se o item de trabalho de origem estiver no estado "Fechado", quero que ele esteja no estado "Concluído" no TFS.

Tenho seguido aconselha emEste artigo, o que sugere definirBypassRules propriedade doWorkItemStore objeto paratrue a fim de poder definirCreatedDate campo. Suponho que o mesmo se aplica à alteração do estado do fluxo de trabalho, já que também requer a exclusão de regras.

Então, eu tentei o seguinte:

// 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 você pode ver, esse exemplo não viola nenhuma regra de validação eworkItem.Validate().Count devolve0. Mas a chamada paraworkItem.Save() lança a seguinte exceção:

Informações adicionais: TF26212: Team Foundation Server não pôde salvar suas alterações. Pode haver problemas com a definição do tipo de item de trabalho. Tente novamente ou entre em contato com o administrador do Team Foundation Server.

Eu verifiquei issoBypassRules está configurado paratrue logo antes da chamada paraSave() método. Além daworkItem.IsValid é tambémtrue.

O fato interessante é que se eu mudar a maneira de obter oWorkItemStore objeto, de

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

para

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

pode salvar sem qualquer problema! Mas neste caso eu não sei como definirBypassRules paratrue. Esta propriedade é somente leitura quando oWorkItemStore objeto é criado, e eu recebo erros de validação se eu tentar definir a etapa do fluxo de trabalho para algo diferente de "Novo".

Então, minha pergunta básica é:como criar itens de trabalho no TFS por meio da API e ser capaz de alterarState campo neste item recém-criado?

questionAnswers(1)

yourAnswerToTheQuestion