【问题标题】:How can I open the TFS changeset details dialog view using a Visual Studio add-in?如何使用 Visual Studio 加载项打开 TFS 变更集详细信息对话框视图?
【发布时间】:2012-02-12 01:09:22
【问题描述】:

我在 TFS 中有一个特定的工件,比如变更集“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 中打开变更集详细信息。就像“关联变更集”部分底部的按钮一样。当您单击链接“Changeset 627”时,它将在 Visual Studio 中打开该变更集。

编辑 1

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

【问题讨论】:

  • 我不是 100% 确定,我也没有代码,在这里我做了类似的事情,但我认为你需要看看 Visual Studio SDK。如果到那时你还没有得到答案,我会尽量记住今晚看看我的旧代码。
  • @Feroc 谢谢,我去看看 SDK。
  • +1:非常有趣。我在解决方案中添加了一个简单的 TXT 文件,其中包含您的链接 http://tfs:8080/tfs/web/UI/Pages/Scc/ViewChangeset.aspx?changeset=123"。当我在 IDE 中打开它时,它在 VS 中使用 CTRL+单击打开了变更集 - 就像您需要的那样。这也是你的情况吗?如果没有 - 这应该在上下文 VS-settings 中进行跟踪。
  • @pantelif 我也做了同样的事情 - 对我来说,它会在新的浏览器选项卡(位于 Visual Studio 内部)中打开变更集详细信息。我正在寻找的不是浏览器选项卡,而是其原始用户界面中的项目。我将编辑我的问题并提供所需用户界面的图片。

标签: visual-studio-2010 tfs tfs-workitem


【解决方案1】:

查看以下博客文章:

基本上,您需要对以下程序集的引用:

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

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

【讨论】:

  • 非常感谢您提供的这个好例子。它工作得很好!谢谢
【解决方案2】:

在 VS 2015 中,您可以使用取自 here 的以下代码

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 2020-06-09
    相关资源
    最近更新 更多