Как изменить состояние рабочего процесса вновь созданного рабочего элемента TFS через API?

создать приложение для переноса рабочего элемента из "что-то" до TFS 2013, и я хочу, чтобы рабочие элементы TFS находились в соответствующих состояниях рабочего процесса, как в исходной системе. Например, если исходный рабочий элемент находится вЗакрыто" состояние, я хочу, чтобы это было вГотово" состояние в TFS.

Я следовал советам вЭта статья, который предлагает установитьBypassRules собственностьWorkItemStore Возражатьtrue для того, чтобы иметь возможность установитьCreatedDate поле. Полагаю, то же самое относится и к изменению состояния рабочего процесса, так как оно также требует обхода правил.

Итак, я попробовал следующее:

// 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();    

Как видите, этот образец ненарушать любые правила валидации, иworkItem.Validate().Count возвращается0, Но призыв кworkItem.Save() выдает следующее исключение:

Дополнительная информация: TF26212: Team Foundation Server не удалось сохранить ваши изменения. Могут быть проблемы с определением типа рабочего элемента. Попробуйте еще раз или обратитесь к администратору Team Foundation Server.

Я дважды проверил этоBypassRules установлен вtrue прямо перед звонкомSave() метод. КромеworkItem.IsValid это также .true

Интересным фактом является то, что если я изменю способ полученияWorkItemStore объект, от

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

в

var store = collection.GetService();

это может спасти без каких-либо проблем! Но в этом случае я нене знаю, как установитьBypassRules вtrue, Это свойство доступно только для чтения, когдаWorkItemStore объект создан, и я получаю ошибки проверки, если я пытаюсь установить шаг рабочего процесса в нечто иное, чем "Новый».

Итак, мой основной вопрос:как создавать рабочие элементы в TFS через API и иметь возможность изменятьState поле в этом новом элементе?

Ответы на вопрос(1)

Ваш ответ на вопрос