10

我在 TFS 中有一个特定的工件,比如 changeset "123",它的 URI "vstfs:///VersionControl/Changeset/123"。我意识到链接http://tfs:8080/tfs/web/UI/Pages/Scc/ViewChangeset.aspx?changeset=123将使用网络浏览器打开变更集详细信息视图。

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

在此处输入图像描述

“发布构建”部分是定制的,一旦发布此类构建,将提供有关将发送给每个人的电子邮件的信息。

本节中的 Changeset 627 是一个已自动转换为链接的 Button 控件。按钮后面的“点击”处理程序有效。目前的代码如下所示:

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

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

在此处输入图像描述

4

2 回答 2

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

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

于 2012-01-17T11:26:27.053 回答
0

在 VS 2015 中,您可以使用从此处获取的以下代码

public void ViewChangesetDetails(int changesetId)
{
        ITeamExplorer teamExplorer = this.GetService<ITeamExplorer>();
        if (teamExplorer != null)
        {
            teamExplorer.NavigateToPage(new Guid(TeamExplorerPageIds.ChangesetDetails), changesetId);
        }
}
于 2017-05-23T06:27:59.887 回答