Как открыть диалоговое окно с подробными сведениями об изменениях в TFS с помощью надстройки Visual Studio?

У меня есть определенный артефакт в TFS, скажем, набор изменений 123, который имеет URI "vstfs:///VersionControl/Changeset/123" . Я понял, что ссылка " http://tfs:8080/tfs/web/UI/Pages/Scc/ViewChangeset.aspx?changeset=123" откроет подробное представление набора изменений с помощью веб-браузера.

Что бы я хотел сделать, так это открыть подробный вид изменений в visual studio. Место, где я встраиваю это, - это настраиваемый раздел внутри сводки сборки. Я реализовал этот настраиваемый раздел как плагин VisualStudio. Вот изображение:

enter image description here

Раздел "Сборка выпуска" выполнен на заказ и предоставит информацию о электронном письме, которое будет отправлено всем, после выпуска такой сборки.

В этом разделе "Настройки" 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. Так же, как и кнопка внизу в разделе "Связанные изменения". Когда вы нажмете ссылку "Changeset 627", она откроет этот набор изменений внутри Visual Studio.

РЕДАКТИРОВАТЬ 1

Может быть немного яснее, какой именно желаемый результат, если я опубликую его. Окно "Сведения об изменениях" - это то, что я хотел бы открыть с помощью API.

enter image description here

Ответ 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 вы можете использовать следующий код, взятый из здесь

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