2012-09-28 93 views
6

我寫一個程序來讀取所有的缺陷了原有的bug跟蹤系統,並將其導入TFS(2008/2010)。我正在使用TFS API創建新的WorkItem,設置其字段,然後保存它們。但是,我無法修改「創建者」和「創建日期」字段,因爲這些字段是由系統設置的。 (也有我想得要能夠強制爲值,如設置提交者是人誰是不是一個有效的TFS用戶等領域)編程方式迫使字段值的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數據庫表,但架構看起來很複雜,我認爲嘗試修改那裏的數據本身是相當危險的。

回答

7

你被允許,如果你是一個服務帳戶設置Created DateCreated By字段,並且您打開旁路規則功能。

您可以選擇當您使用此標誌創建WorkItemStore類的實例繞過規則:WorkItemStoreFlags.BypassRules

請注意,您只允許專門的工作項目的第一個修訂版設置這些字段。

+0

感謝查詢,這聽起來正是我需要。我會嘗試,並將其標記爲答案,如果我能得到它的工作 –

+0

你知道,如果這個標誌是新與2012 TFS?它不在以前版本的庫中。 –

+0

我一直在嘗試這個,這是有點奇怪。首先,您不能在第一次保存時設置這些字段,只能後續保存。其次,它不會讓我改變System.CreatedBy,即使我可以用這種技術來改變System.CreatedDate和Microsoft.VSTS.Common.ActivatedDate。 –

1

只是一個建議:遷移時插入在工作項的描述開始這樣的文字:1/1 2012

  • 原始創建:

    • 從系統XXX
    • 原始創建日期遷移由:李四
  • +0

    是的,這就是我會做,如果我不能修改創建日期可言,但它意味着人們不能用它們從舊系統中,用來 –

    相關問題