Как сопоставить URL-адрес элемента TFS с чем-то видимым - PullRequest
6 голосов
/ 24 июня 2011

Мы программно генерируем электронные письма о развертывании, основываясь на истории изменений и связанных рабочих элементов со времени последней развернутой сборки.Они немного похожи на сводную информацию о сборке в Visual Studio (но с объединением многих сборок).

Кажется, что в данных есть полезные URL (например, vstfs:///VersionControl/Changeset/205151), но они являются новыми для TFS SDK Iне делать, если / как это сопоставляется с видимым элементом (например, http://tfsserver:port/somepath/...). ссылки на сводку по сборке внутри Visual Studio являются интерактивными, но являются ли они ссылками только для VS?

Если возможно, мы хотим включить ссылки в электронное письмокоторые открывают связанный элемент (в браузере?), поэтому я думаю, мне нужно знать, доступны ли для просмотра веб-страницы пути TFS, и если да, то как?

Предложения приветствуются. Спасибо.

Ответы [ 4 ]

13 голосов
/ 26 июня 2011

Это uRl, который я использовал для доступа к рабочим элементам,

=> http://ServerName:PortNumber/tfs/web/wi.aspx?id=xxidxx

Редактировать Указанный мною формат работает с TFS 2010Он в основном генерирует путь к рабочему элементу в веб-представлении.Нажатие на это открывает рабочий элемент в веб-представлении

В качестве альтернативы вы также можете получить навигационный URL-адрес программно.

var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("TFSURL"));
var versionControl = tfs.GetService<ICommonStructureService>();

var projects = versionControl.ListAllProjects();

var myService = tfs.GetService<TswaClientHyperlinkService>();

var myUrl = myService.GetChangesetDetailsUrl(21);

Таким образом, служба " TswaClientHyperlinkService " является службой гиперссылок TFS microsofts.Это сгенерирует форматы URL для абсолютного пути, относительного пути, пути и запроса, бла-бла.

HTH,

Приветствия, Тарун

PS - я ненавижу ошибаться!!!хахаха ... enter image description here

РЕДАКТИРОВАТЬ И так как в вашем случае у вас есть доступный URI и вы уже используете TFS API, эти две строки кода помогут вам.

var testManagementService = tfs.GetService<ILinking>();
var testControllers = testManagementService.GetArtifactUrl(@"vstfs:///VersionControl/Changeset/205151");

Это сгенерирует, https://ServerName:PortNumber/defaultcollection/VersionControl/Changeset.aspx?artifactMoniker=205151

HTH,

Приветствия, Тарун

6 голосов
/ 24 июня 2011

Ниже приводится стандартный URL-адрес для доступа к рабочим элементам

http://TFS_Name:port_number/WorkItemTracking/Workitem.aspx?artifactMoniker=work_Item_Id

3 голосов
/ 24 июня 2011

Ссылки vstfs называются «идентификаторами артефактов» и являются внутренними данными для TFS, которые, как ожидается, будут использоваться только клиентом TFS.Клиент TFS проанализирует эти данные и определит способ их отображения.Для ссылки на набор изменений, которую вы предоставляете, расширенные клиенты откроют диалоговое окно с подробностями набора изменений.Веб-клиент переведет эту ссылку в URI.И различные библиотеки TFS могут предоставить вам больше данных об этом артефакте, используя этот идентификатор.

Если вы хотите создать свою собственную ссылку на TFS Web Access, то строго правильный способ сделать это - запросить некоторую информациюна сервере.Получив TswaClientHyperlinkService, вы можете запросить URI веб-доступа для различных служб, таких как просмотр набора изменений или просмотр рабочего элемента.Некоторые примеры приведены в блоге Мартина Вудворда .

0 голосов
/ 28 июля 2014

В TFS2012 должен присутствовать дополнительный параметр URL pcguid. Вот новый формат, расширяющий хорошее решение, данное @TarunArora:

http://ServerName:PortNumber/tfs/web/wi.aspx?pcguid=xxguidxx&id=xxidxx

В этом блоге описывается, как найти pcguid с помощью Visual Studio.

Однако, если вы, как и я, пытаетесь использовать TFS без установленной Visual Studio (не спрашивайте!), Есть альтернатива, использующая интерфейс TFS на основе браузера:

  1. Перейти к «Открытым вопросам»
  2. Нажмите кнопку, которая выглядит как конверт («Отправить запрос как электронное письмо») в правом верхнем углу панели рабочего элемента.
  3. Щелкните правой кнопкой мыши одну из ссылок в электронном письме и скопируйте расположение ссылки
  4. Отмена из электронного письма без его отправки.
  5. Вставьте ссылку в текстовый редактор и извлеките значение pcguid.
...