Я пишу утилиту для чтения всех дефектов из устаревшей системы отслеживания ошибок и импорта их в TFS (2008/2010). Я использую API TFS для создания новых WorkItems, установки их полей и последующего их сохранения. Однако я не могу изменить поля «Кем создан» и «Дата создания», так как они устанавливаются системой. (а также есть другие поля, для которых я хотел бы иметь возможность принудительно указывать значения, например, установить отправителя как кого-то, кто не является действительным пользователем 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, но схема выглядит сложной, и я думаю, что было бы довольно рискованно пытаться изменить данные там самостоятельно.