2012-01-17 3 views
10

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

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

enter image description here

В разделе «Release Build» является заказом и предоставит информацию о электронных почтах, который будет посылать каждый, когда такая сборка будет отпущена.

Изменения в этом разделе - это элемент управления 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.

EDIT 1

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

enter image description here

+0

I я не уверен на 100%, и у меня нет кода здесь, где я сделал что-то подобное, но я думаю, вам нужно взглянуть на Visual Studio SDK.Сегодня я постараюсь не заглядывать в мой старый код, если вы не получили ответа до этого. – Feroc

+0

@Feroc спасибо, я посмотрю на SDK. – Christian

+0

+1: Очень интересно. Я добавил в решении простой TXT-файл, содержащий вашу ссылку 'http: // tfs: 8080/tfs/web/UI/Pages/Scc/ViewChangeset.aspx? Changeset = 123" '. Когда я открыл его в среде IDE , он открыл набор изменений с помощью CTRL + клика внутри VS - так же, как вам нужно. Это не так? Если нет - это следует отслеживать в контексте VS-настроек. – pantelif

ответ

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

Это вызывает диалоговое окно, которое показывает пользователю всех подробностей о конкретной ревизии. (Это то же самое диалоговое окно, которое появляется, если пользователь выбирает «Подробнее ...» в диалоговом окне «Найти» ревизии.)

+0

Большое спасибо за этот хороший пример. Он отлично работает! – Christian

0

В VS 2015 вы можете использовать следующий код, взятый из here

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