Программно форсируя значения полей для 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