7

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

4

2 回答 2

8

如果您是服务帐户并打开绕过规则功能,则允许您设置Created Date和字段。Created By

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

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

于 2012-09-28T23:59:38.423 回答
1

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

  • 从系统 XXX 迁移
  • 原创作日期:2012年1月1日
  • 原创作者:John Doe
于 2012-09-28T13:21:54.453 回答