Piszę narzędzie do odczytu wszystkich defektów ze starszego systemu śledzenia błędów i importowania ich do TFS (2008/2010). Używam TFS API do tworzenia nowych WorkItems, ustawiania ich pól, a następnie ich zapisywania. Nie mogę jednak modyfikować pól "Utworzono przez" i "Utworzono datę", ponieważ są one ustawione przez system. (A są też inne pola, które chciałbym być w stanie zmusić wartości, takie jak ustawienie Nadesłał być kimś, kto nie jest prawidłowy użytkownik TFS)Programowe wymuszanie wartości pól dla TFS WorkItem
// 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;
Oczywiście, jeśli nie mogę ustawić je pola, skończę ze wszystkimi starszymi błędami wyglądającymi, jakby zostały stworzone w tym samym dniu przez tę samą osobę.
Czy istnieje sposób, w jaki mogę korzystać z interfejsu API, ale wymuszać zmiany w normalnie chronionych polach? Przejrzałem dostęp do tabel bazy danych TFS bezpośrednio, ale schemat wygląda na skomplikowany i myślę, że byłoby bardzo ryzykowne, aby samemu zmodyfikować dane.
dzięki, brzmi to dokładnie Potrzebuję. Wypróbuję to i oznaczy to jako odpowiedź, czy mogę ją uruchomić –
Czy wiesz, czy ta flaga jest nowa z TFS 2012? Nie ma go w poprzedniej wersji biblioteki. –
Próbowałem tego i jest to trochę dziwne. Po pierwsze, nie możesz ustawić tych pól przy pierwszym zapisie, tylko w kolejnych zapisach. Po drugie, nie pozwolę mi zmienić System.CreatedBy, nawet jeśli mogę zmienić System.CreatedDate i Microsoft.VSTS.Common.ActivatedDate tą techniką. –