レガシーバグ追跡システムからすべての欠陥を読み取り、それらをTFS(2008/2010)にインポートするユーティリティを作成しています。TFS APIを使用して、新しいWorkItemを作成し、それらのフィールドを設定してから保存しています。ただし、「作成者」フィールドと「作成日」フィールドはシステムによって設定されているため、変更できません。(また、送信者を有効な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データベーステーブルに直接アクセスすることを検討しましたが、スキーマが複雑に見え、そこでデータを自分で変更しようとするのは非常に危険だと思います。