2012-01-17 17 views
10

Tôi có một tạo phẩm cụ thể trong TFS, nói thay đổi "123", có URI "vstfs: /// VersionControl/Changeset/123". Tôi nhận ra rằng liên kết "http://tfs:8080/tfs/web/UI/Pages/Scc/ViewChangeset.aspx?changeset=123" sẽ mở chế độ xem chi tiết changeset bằng trình duyệt web.Làm cách nào tôi có thể mở hộp thoại chi tiết thay đổi TFS bằng cách sử dụng bổ trợ Visual Studio?

Điều tôi muốn làm là mở chế độ xem chi tiết changeset bên trong studio trực quan. Nơi tôi đang nhúng đây là phần tùy chỉnh bên trong bản tóm tắt bản dựng. Tôi đã triển khai phần tùy chỉnh này như một Plugin VisualStudio. Dưới đây là một hình ảnh:

enter image description here

Phần "phát hành xây dựng" là custom-made và sẽ cung cấp thông tin về một email sẽ được gửi đến tất cả mọi người, một khi như một xây dựng được phát hành.

Thay đổi 627 bên trong phần này là nút Điều khiển tự động được chuyển thành liên kết. "Click" -Handler đằng sau nút hoạt động. Mã hiện tại trông giống như sau:

... 
string link = buildDetailView.TeamProjectCollection.Uri.AbsoluteUri.Substring(0, buildDetailView.TeamProjectCollection.Uri.AbsoluteUri.LastIndexOf('/')); 
link += "/web/UI/Pages/Scc/ViewChangeset.aspx?changeset="; 
link += ((Button)sender).Content; 

Process.Start(new ProcessStartInfo(link)); 
e.Handled = true; 
... 

Mã này sẽ mở tab Trình duyệt mới và hiển thị đúng trang. Tuy nhiên, tôi muốn nó mở chi tiết changeset bên trong Visual Studio. Cũng giống như nút ở dưới cùng trong phần "Thay đổi liên quan". Khi bạn nhấp vào liên kết "Changeset 627", nó sẽ mở ra changeset bên trong Visual Studio.

EDIT 1

Nó có thể được rõ ràng hơn một chút những gì chính xác kết quả mong muốn là, nếu tôi gửi một hình ảnh của nó. Cửa sổ "Thay đổi chi tiết" là những gì tôi muốn mở bằng API.

enter image description here

+0

tôi không chắc chắn 100% và tôi không có mã ngay tại đây, nơi tôi đã làm một cái gì đó tương tự, nhưng tôi nghĩ rằng bạn cần phải xem xét SDK Visual Studio.Tôi sẽ cố gắng nhớ xem mã cũ của tôi tối nay, nếu bạn không nhận được câu trả lời cho đến lúc đó. – Feroc

+0

@ Cảm ơn, tôi sẽ xem SDK. – Christian

+0

+1: Rất intersting. Tôi đã thêm vào một giải pháp một tệp TXT đơn giản có chứa liên kết của bạn 'http: // tfs: 8080/tfs/web/UI/Pages/Scc/ViewChangeset.aspx? Changeset = 123 "'. Khi tôi mở nó trong IDE , nó đã mở changeset với CTRL + bấm trong VS - giống như bạn cần.Đây có phải là trường hợp của bạn không? Nếu không - điều này nên được theo dõi trong bối cảnh VS-cài đặt – pantelif

Trả lời

14

Hãy nhìn vào bài đăng trên blog sau:

Về cơ bản , bạn cần tham chiếu đến các hội đồng sau:

Microsoft.TeamFoundation.Client 
Microsoft.TeamFoundation.VersionControl.Client 
Microsoft.TeamFoundation.VersionControl.Controls 
Microsoft.VisualStudio.TeamFoundation 
Microsoft.VisualStudio.TeamFoundation.Client 
Microsoft.VisualStudio.TeamFoundation.VersionControl 

Sau đó, bạn có thể sử dụng VersionControlExt.ViewChangesetDetails(int changesetId) để hiển thị một changeset cụ thể từ các add-in của bạn:

VersionControlExt vce; 
vce = _applicationObject.GetObject("Microsoft.VisualStudio.TeamFoundation.VersionControl.VersionControlExt") as VersionControlExt; 
vce.ViewChangesetDetails(changesetId); 

này sẽ trả về một hộp thoại cho thấy người sử dụng tất cả các chi tiết về một changeset cụ thể. (Đây là hộp thoại tương tự xuất hiện nếu người sử dụng chọn "Details ..." trong "Tìm changesets" hộp thoại.)

+0

Cảm ơn bạn rất nhiều vì ví dụ tốt này, nó hoạt động hoàn toàn tốt đẹp! – Christian

0

Trong VS 2015, bạn có thể sử dụng đoạn mã sau lấy từ here

public void ViewChangesetDetails(int changesetId) 
{ 
     ITeamExplorer teamExplorer = this.GetService<ITeamExplorer>(); 
     if (teamExplorer != null) 
     { 
      teamExplorer.NavigateToPage(new Guid(TeamExplorerPageIds.ChangesetDetails), changesetId); 
     } 
}