我在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控件。按钮后面的“Click”-Handler可以正常工作。代码目前看起来像这样:
...
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中打开变更集细节。就像“Associated Changesets”部分底部的按钮一样。当您单击“Changeset 627”链接时,它将在Visual Studio中打开该更改集。
编辑1
如果我张贴一张照片,可能会更准确地说明所期望的结果是什么。 我希望使用API打开“更改集详细信息”窗口。
答案 0 :(得分: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);
这会打开一个对话框,向用户显示有关特定变更集的所有详细信息。 (如果用户在“查找更改集”对话框中选择“详细信息...”,则会显示相同的对话框。)
答案 1 :(得分:0)
在VS 2015中,您可以使用以下来自here
的代码public void ViewChangesetDetails(int changesetId)
{
ITeamExplorer teamExplorer = this.GetService<ITeamExplorer>();
if (teamExplorer != null)
{
teamExplorer.NavigateToPage(new Guid(TeamExplorerPageIds.ChangesetDetails), changesetId);
}
}