Программно форсируя значения полей для TFS WorkItem

Я пишу программу, чтобы прочитать все дефекты из устаревшей системы отслеживания ошибок, и импортировать их в TFS (2008/2010). Я использую API TFS для создания новых WorkItems, установки их полей, а затем сохранения их. Однако я не могу изменить поля" Created By "и" Created Date", поскольку они установлены системой. (и есть другие поля, для которых я хотел бы иметь возможность принудительно использовать значения, например, установить отправителя как кого-то, кто не является допустимым TFS пользователь)

// these fail with "The value for the field 'Created By' cannot be changed."
defectWorkItem.Fields["Created By"].Value = defect.Submitter;
defectWorkItem.Fields["Created Date"].Value = defect.SubmitDate;

очевидно, если я не могу установить эти поля, я закончу со всеми устаревшими ошибками, выглядящими так, как будто они были созданы в ту же дату одним и тем же человеком.

есть ли способ использовать API, но принудительно изменять поля, которые обычно защищены? Я изучил доступ к таблицам базы данных TFS напрямую, но схема выглядит сложной, и я думаю, что было бы довольно рискованно пытаться изменить данные там самостоятельно.

2 ответов


вы можете установить Created Date и Created By поля, если вы являетесь учетной записью службы и включаете функцию правила обхода.

вы можете обойти правила при создании экземпляра WorkItemStore класс, используя этот флаг: WorkItemStoreFlags.BypassRules.

обратите внимание, что вы можете установить эти поля только для первой ревизии рабочих элементов.


просто предложение: вставьте этот текст в начале описания рабочего элемента при переносе:

  • перенесено из системы XXX
  • дата создания: 1/1 2012
  • Оригинал создан: John Doe