2012-09-28 21 views
6

Tôi đang viết một tiện ích để đọc tất cả các lỗi trong hệ thống theo dõi lỗi cũ và nhập chúng vào TFS (2008/2010). Tôi đang sử dụng API TFS để tạo WorkItems mới, thiết lập các trường của họ và sau đó lưu chúng. Tuy nhiên, tôi không thể sửa đổi các trường "Tạo bởi" và "Ngày tạo", vì chúng được thiết lập bởi hệ thống. (Và có những lĩnh vực khác nữa mà tôi muốn để có thể buộc giá trị cho, chẳng hạn như thiết lập người nộp phải là người không phải là một người sử dụng TFS hợp lệ)Lập trình buộc các giá trị trường cho 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; 

Rõ ràng nếu tôi không thể thiết lập các lĩnh vực, tôi sẽ kết thúc với tất cả các lỗi di sản trông giống như chúng đã được tạo ra trên cùng một ngày bởi cùng một người.

Có cách nào tôi có thể sử dụng API nhưng có hiệu lực thông qua các thay đổi đối với các trường thường được bảo vệ không? Tôi đã xem xét việc truy cập trực tiếp vào các bảng cơ sở dữ liệu TFS, nhưng lược đồ có vẻ phức tạp và tôi nghĩ sẽ khá rủi ro khi cố sửa đổi dữ liệu ở đó.

Trả lời

7

Bạn được phép đặt các trường Created DateCreated By nếu bạn là tài khoản dịch vụ và bạn bật tính năng quy tắc bỏ qua.

Bạn có thể chọn bỏ qua các quy tắc khi tạo cá thể của lớp WorkItemStore bằng cách sử dụng cờ này: WorkItemStoreFlags.BypassRules.

Xin lưu ý rằng bạn chỉ được phép đặt những trường này cho bản sửa đổi đầu tiên của các mục công việc.

+0

. Tôi cần. Tôi sẽ thử nó và đánh dấu nó như là câu trả lời nếu tôi có thể làm cho nó hoạt động –

+0

Bạn có biết nếu lá cờ này là mới với TFS 2012? Nó không có trong phiên bản trước của thư viện. –

+0

Tôi đã thử điều này và nó hơi lạ một chút. Trước tiên, bạn không thể đặt các trường này vào lần lưu đầu tiên, chỉ các lần lưu sau đó. Thứ hai, nó sẽ không cho phép tôi thay đổi System.CreatedBy, mặc dù tôi có thể thay đổi System.CreatedDate và Microsoft.VSTS.Common.ActivatedDate bằng kỹ thuật này. –

1

Chỉ cần một gợi ý: Chèn văn bản này vào lúc bắt đầu mô tả của một hạng mục công trình khi di chuyển:

  • Chuyển từ hệ thống XXX
  • ngày tạo gốc: 1/1 2012
  • gốc tạo bởi: John Doe
+0

có, đó là những gì tôi sẽ làm nếu tôi không thể sửa đổi ngày đã tạo, nhưng điều đó có nghĩa là mọi người không thể sử dụng truy vấn họ đã sử dụng từ hệ thống cũ –

Các vấn đề liên quan