2012-09-28 7 views
6

私は、従来のバグ追跡システムのうち、すべての欠陥を読み、TFS(2008/2010)にインポートするためのユーティリティを書いています。私は、TFS APIを使用して新しいWorkItemを作成し、フィールドを設定してから保存しています。しかし、私は "Created By"フィールドと "Created Date"フィールドを変更することはできません。これらはシステムによって設定されているためです。私はこれらを設定することができない場合は明らかにプログラムによる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; 

(と私は、このような有効なTFSユーザーではない誰かになるように、提出者の設定などの値を、強制的にできるようにしたいと思いますどのあまりにも他のフィールドがあります)フィールドでは、同じ人によって同じ日付に作成されたように、すべてのレガシーバグが表示されます。

私が正常に保護されたフィールドへの変更によるAPIが、力を使用することができる方法はありますか?私はTFSデータベースのテーブルに直接アクセスしてみましたが、スキーマが複雑に見えて、データを自分で修正しようとするのはかなり危険です。

答えて

7

あなたがサービスアカウントであればCreated DateCreated Byフィールドを設定することが許可されている、あなたはルール機能のバイパスをオンにします。

このフラグを使用して、WorkItemStoreクラスのインスタンスを作成するときにルールをバイパスすることができます。WorkItemStoreFlags.BypassRules

あなただけの作業項目の最初の改正のためのこれらのフィールドを設定することが許可されていることに注意してください。

+0

感謝を使用できないことを意味します、これは正確に何を鳴らし私は欲しい。私はそれが、このフラグはTFS 2012で新しく追加された場合、あなたが知っています –

+0

を作業得ることができる場合、私はそれを試してみると、その答えとしてそれをマークしますか?以前のバージョンのライブラリにはありません。 –

+0

私はこれを試してきましたが、少し奇妙です。まず、最初の保存時にこれらのフィールドを設定することはできません。後続の保存のみに設定できます。第二に、それは私がこのテクニックでSystem.CreatedDateとMicrosoft.VSTS.Common.ActivatedDateを変更することができていても、私はSystem.CreatedByを変更できません。 –

1

だけの提案:移行時に作業項目の記述の開始時にこのテキストを挿入します。作成した1/1 2012

  • オリジナル:
  • オリジナル作成日システムXXXから

    • に移行:ジョン・ドウ
  • +0

    はい、それは私がすべてで作成した日付を変更できない場合、私がやるものだが、それは、人々は古いシステムからそれらが使用されるクエリ –

    関連する問題