2012-09-28 2 views
6

나는 기존 버그 추적 시스템에서 모든 결함을 읽고 TFS (2008/2010)로 가져 오는 유틸리티를 작성하고 있습니다. TFS API를 사용하여 새 WorkItem을 만들고 필드를 설정 한 다음 저장합니다. 그러나 "작성자"및 "만든 날짜"필드는 시스템에서 설정하므로 수정할 수 없습니다. 나는이를 설정할 수없는 경우 분명히프로그래밍 방식으로 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; 

(그리고 나는 그런 유효한 TFS 사용자가 아닌 사람을 수 제출자 설정과 같은 값을 강제 할 수 있도록하고자하는 너무 다른 분야가있다) 필드에서, 같은 사람이 같은 날짜에 만들어 졌던 것처럼 보이는 모든 유산 버그로 끝날 것입니다.

API를 사용할 수있는 방법이 있습니까?하지만 일반적으로 보호되는 필드를 변경해야합니까? 필자는 TFS 데이터베이스 테이블에 직접 액세스하는 방법을 살펴 보았지만 스키마가 복잡해 보였으므로 직접 데이터를 수정하려고 시도하는 것이 위험하다고 생각합니다.

답변

7

당신은 당신이 서비스 계정있는 경우 Created DateCreated By 필드를 설정할 수 있습니다 당신은 규칙 기능을 바이 패스 전원을 켭니다.

이 플래그를 사용하여 WorkItemStore 클래스의 인스턴스를 만들 때 규칙을 무시하도록 선택할 수 있습니다 : WorkItemStoreFlags.BypassRules.

작업 항목의 첫 번째 수정에만이 필드를 설정할 수 있습니다.

+0

감사합니다. 나는 필요하다. 나는 그것을 시험해보고 그것을 작동시킬 수 있다면 그것을 대답으로 표시 할 것입니다. –

+0

이 깃발이 TFS 2012에 새로 추가되었는지 알고 계십니까? 이전 버전의 라이브러리에 없습니다. –

+0

나는 이것을 시험 해왔다. 그리고 그것은 조금 이상하다. 첫째, 첫 번째 저장에서는이 필드를 설정할 수 없으며 후속 저장에서만 필드를 설정할 수 있습니다. 둘째,이 기술로 System.CreatedDate 및 Microsoft.VSTS.Common.ActivatedDate를 변경할 수 있지만 System.CreatedBy를 변경하지 못하게합니다. –

1

그냥 제안 : 마이그레이션 할 때 작업 항목에 대한 설명의 시작이 텍스트를 삽입 : 생성 1/1 2012

  • 원본 :
  • 원래 작성 날짜 시스템 XXX에서

    • 를 마이그레이션 기준 : 홍길동
  • +0

    그렇습니다. 만든 날짜를 전혀 수정할 수 없으면 수행 할 것이지만 사람들이 이전 시스템에서 사용하던 쿼리를 사용할 수 없음을 의미합니다. –

    관련 문제