Как открыть диалоговое окно с подробными сведениями об изменениях в 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);
}
}