Visual studio 2010 如何使用Visual Studio加载项打开TFS变更集详细信息对话框视图?

Visual studio 2010 如何使用Visual Studio加载项打开TFS变更集详细信息对话框视图?,visual-studio-2010,tfs,tfs-workitem,Visual Studio 2010,Tfs,Tfs Workitem,我在TFS中有一个特定的工件,比如changeset“123”,它具有URIvstfs:///VersionControl/Changeset/123“。我意识到链接“将使用web浏览器打开变更集详细视图 我想做的是在VisualStudio中打开变更集详细视图。我将其嵌入的地方是构建摘要中的一个自定义部分。我将此自定义部分作为VisualStudio插件实现。这是一张照片: “发布版本”部分是定制的,将提供有关电子邮件的信息,一旦发布此类版本,将发送给所有人 本节中的变更集627是一个按钮控

我在TFS中有一个特定的工件,比如changeset“123”,它具有URIvstfs:///VersionControl/Changeset/123“。我意识到链接将使用web浏览器打开变更集详细视图

我想做的是在VisualStudio中打开变更集详细视图。我将其嵌入的地方是构建摘要中的一个自定义部分。我将此自定义部分作为VisualStudio插件实现。这是一张照片:

“发布版本”部分是定制的,将提供有关电子邮件的信息,一旦发布此类版本,将发送给所有人

本节中的变更集627是一个按钮控件,已自动转换为链接。按钮后面的“单击”处理程序可以工作。当前代码如下所示:

...
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;
...
此代码将打开一个新的浏览器选项卡并显示正确的页面。但是,我希望它在VisualStudio中打开变更集细节。就像“关联变更集”部分底部的按钮一样。当您单击“变更集627”链接时,它将在VisualStudio中打开该变更集

编辑1

如果我贴一张照片,可能会更清楚期望的结果到底是什么。 “变更集详细信息”窗口是我希望使用API打开的窗口


看看下面的博客帖子:

  • 和(ZIP文件还包括API上的文档)
基本上,您需要引用以下程序集:

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

这将打开一个对话框,向用户显示有关特定变更集的所有详细信息。(如果用户在“查找变更集”对话框中选择“详细信息…”,则会出现相同的对话框。)

在VS 2015中,您可以使用以下代码:

public void视图变更集详细信息(int changesetId)
{
ITeamExplorer teamExplorer=this.GetService();
如果(teamExplorer!=null)
{
teamExplorer.NavigatePage(新Guid(teamExplorer页面ID.ChangesetDetails)、changesetId);
}
}

我不是100%确定,我没有这里的代码,我做了类似的事情,但我认为您需要看看Visual Studio SDK。如果你在那之前没有得到答案的话,我会尽量记住今晚看一看我的旧代码。@Feroc谢谢,我会看一看SDK。+1:非常有趣。我在解决方案中添加了一个简单的TXT文件,其中包含您的链接
http://tfs:8080/tfs/web/UI/Pages/Scc/ViewChangeset.aspx?changeset=123“
。当我在IDE中打开它时,它在VS中用CTRL+单击打开了变更集,就像您需要的那样。这也是你的案子吗?如果没有-这应该在上下文与设置中跟踪。@pantelif我也这样做了-对我来说,它会在一个新的浏览器选项卡(位于visual studio中)中打开变更集详细信息。我要找的不是浏览器选项卡,而是原始用户界面中的项目。我将编辑我的问题并提供所需用户界面的图片。非常感谢您提供了这个好例子。它工作得非常好!谢谢
public void ViewChangesetDetails(int changesetId)
{
        ITeamExplorer teamExplorer = this.GetService<ITeamExplorer>();
        if (teamExplorer != null)
        {
            teamExplorer.NavigateToPage(new Guid(TeamExplorerPageIds.ChangesetDetails), changesetId);
        }
}