2012-09-28 7 views
6

Sto scrivendo un'utilità per leggere tutti i difetti di un sistema legacy di tracciamento dei bug e importarli in TFS (2008/2010). Sto usando l'API TFS per creare nuovi WorkItem, impostare i loro campi e quindi salvarli. Tuttavia, non sono in grado di modificare i campi "Creato da" e "Data di creazione", poiché sono impostati dal sistema. (E ci sono altri campi troppo che mi piacerebbe essere in grado di forzare i valori per i quali l'impostazione del mittente di essere qualcuno che non è un utente di TFS valida)Forzare in modo programmatico i valori dei campi per un oggetto 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; 

Ovviamente se non riesco a impostare questi campi, finirò con tutti i bug legacy che sembrano essere stati creati nella stessa data dalla stessa persona.

C'è un modo per utilizzare l'API ma forzare le modifiche ai campi normalmente protetti? Ho esaminato direttamente l'accesso alle tabelle del database TFS, ma lo schema sembra complicato e penso che sarebbe piuttosto rischioso tentare di modificare i dati lì da solo.

risposta

7

Hai il permesso di impostare i campi Created Date e Created By se sei un account di servizio e si accende il bypass regole dispongono.

È possibile scegliere di ignorare le regole quando si crea un'istanza della classe WorkItemStore utilizzando questo flag: WorkItemStoreFlags.BypassRules.

Si noti che è possibile impostare questi campi solo per la prima revisione degli elementi di lavoro.

+0

grazie, questo suona esattamente cosa Ho bisogno. Lo proverò e contrassegnerò come risposta se riesco a farlo funzionare –

+0

Sai se questo flag è nuovo con TFS 2012? Non è nella versione precedente della libreria. –

+0

Ci ho provato ed è un po 'strano. Innanzitutto, non puoi impostare questi campi sul primo salvataggio, solo i salvataggi successivi. In secondo luogo, non mi consente di modificare System.CreatedBy, anche se posso modificare System.CreatedDate e Microsoft.VSTS.Common.ActivatedDate con questa tecnica. –

1

Solo un suggerimento: inserire questo testo all'inizio della descrizione di un elemento di lavoro durante la migrazione:

  • migrati da Sistema XXX
  • originale data di creazione: 1/1 2012
  • originale creato da: John Doe
+0

sì, questo è quello che farò se non riesco a modificare le date create a tutti, ma vorrà dire che le persone non possono usare le query a cui sono abituati dal vecchio sistema –