7

レガシーバグ追跡システムからすべての欠陥を読み取り、それらを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データベーステーブルに直接アクセスすることを検討しましたが、スキーマが複雑に見え、そこでデータを自分で変更しようとするのは非常に危険だと思います。

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 に答える