以编程方式强制TFS WorkItem的字段值

我正在编写一个实用程序来读取遗留错误跟踪系统中的所有缺陷,并将它们导入TFS(2008/2010)。 我正在使用TFS API创建新的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数据库表,但架构看起来很复杂,我认为尝试自己修改数据会很危险。

如果您是服务帐户并且打开了绕过规则function,则可以设置“ Created Date和“ Created By字段。

使用此标志创建WorkItemStore类的实例时,可以选择绕过规则: WorkItemStoreFlags.BypassRules

请注意,您只能为工作项的第一个修订版设置这些字段。

只是一个建议:迁移时在工作项描述的开头插入此文本:

  • 从System XXX迁移
  • 原创日期:2012年1月1日
  • 原创作者:John Doe