2012-01-17 66 views
10

我在TFS中有一個特定的工件,比如說變更集「123」,它的URI是「vstfs:/// VersionControl/Changeset/123」。我意識到鏈接http://tfs:8080/tfs/web/UI/Pages/Scc/ViewChangeset.aspx?changeset=123將使用Web瀏覽器打開更改集詳細信息視圖。如何使用Visual Studio加載項打開TFS變更集詳細信息對話框視圖?

我想要做的是在Visual Studio中打開changeset detail視圖。我嵌入的地方是構建摘要中的一個自定義部分。我將這個自定義部分實現爲VisualStudio插件。這裏是一個圖片:

enter image description here

一節「發佈版本」是定製的,並會提供有關將要發送給大家,一旦這樣的生成被釋放的電子郵件信息。

本節中的變更集627是一個Button控件,它已自動轉換爲鏈接。按鈕後面的「Click」 - 處理程序工作。代碼目前如下所示:

... 
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; 
... 

此代碼將打開一個新的瀏覽器選項卡並顯示正確的頁面。不過,我希望它在Visual Studio中打開變更集的詳細信息。就像「關聯變更集」部分底部的按鈕一樣。當你點擊鏈接「變更集627」時,它將在Visual Studio中打開該變更集。

編輯1

它可能是一個有點清晰準確期望的結果是什麼,如果我上傳它的照片。 「Changeset Details」窗口是我想用API打開的窗口。

enter image description here

+0

我採取了以下代碼我不是100%確定的,我沒有這裏的代碼,我在那裏做了類似的事情,但我認爲你需要看看Visual Studio SDK。如果你在那之前沒有得到答案,我會盡量記住今天晚上看看我的舊代碼。 – Feroc 2012-01-17 08:12:23

+0

@Feroc謝謝,我會看看SDK。 – Christian 2012-01-17 08:48:36

+0

+1:很有意思。我在一個解決方案中添加了一個簡單的TXT文件,其中包含鏈接'http:// tfs:8080/tfs/web/UI/Pages/Scc/ViewChangeset.aspx?changeset = 123「'當我在IDE中打開它時,它在VS中用CTRL +點擊打開了Changeset - 就像你需要的一樣。這是你的情況嗎?如果不是的話 - 這應該在上下文VS設置中進行跟蹤 – pantelif 2012-01-17 08:49:09

回答

14

看看下面的博客文章:

本質,您需要參考以下程序集:

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

然後你可以使用VersionControlExt.ViewChangesetDetails(int changesetId)顯示來自外接具體變更:

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

這帶來了一個對話框,顯示該用戶的所有有關特定變更的詳細信息。 (這是如果用戶選擇出現的同一個對話框「詳細信息...」,在「查找變更」對話框。)

+0

非常感謝你的這個好例子。它工作得很好!謝謝 – Christian 2012-01-17 13:05:05

0

在2015年VS您可以使用從here

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