我正在编写一个实用程序来读取遗留错误跟踪系统中的所有缺陷,并将它们导入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数据库表,但架构看起来很复杂,我认为尝试自己修改数据会很冒险。
答案 0 :(得分:8)
如果您是服务帐户并且启用了绕过规则功能,则可以设置Created Date
和Created By
字段。
您可以选择在使用此标记创建WorkItemStore
类的实例时绕过规则:WorkItemStoreFlags.BypassRules
。
请注意,您只能为工作项的第一个修订版设置这些字段。
答案 1 :(得分:1)
只是一个建议:迁移时在工作项描述的开头插入此文本: