Как сопоставить url-адрес элемента TFS с чем-то видимым
мы программно генерируем электронные письма развертывания на основе истории наборов изменений и связанных workitems с момента последней развернутой сборки. Они немного похожи на сводную информацию о сборке в Visual Studio (но со многими сборками вместе).
в данных появляются полезные URL-адреса (например,vstfs:///VersionControl/Changeset/205151
), но будучи новым для TFS SDK, я не делаю, если/как это сопоставляется с видимым элементом (например, http://tfsserver: port / somepath/...). Ссылки сводки сборки внутри Visual Studio кликабельны, но являются ли они ссылками VS-only?
Если возможно, мы хотим включить ссылки в электронную почту, которая открывает связанный элемент (в браузере?), поэтому я думаю, что мне нужно знать, доступны ли пути TFS для просмотра в интернете, и если да, то как?
предложения приветствуются. Спасибо.
4 ответов
ниже приведен стандартный url для доступа к рабочим элементам
http://TFS_Name:port_number/WorkItemTracking/Workitem.аспн?artifactMoniker=work_Item_Id
это 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" это служба гиперссылки microsofts TFS. Это создаст форматы url для абсолютного пути, относительного пути, пути и запроса, бла-бла.
HTH,
Ура, Тарун
PS-Я ненавижу ошибаться!!! хахаха...
редактировать И поскольку в вашем случае у вас есть URI, и вы уже используете API TFS, эти две строки кода сделают трюк.
var testManagementService = tfs.GetService<ILinking>();
var testControllers = testManagementService.GetArtifactUrl(@"vstfs:///VersionControl/Changeset/205151");
это создаст, https://ServerName:PortNumber/defaultcollection/VersionControl/Changeset.aspx?artifactMoniker=205151
HTH,
Ура, Тарун
ссылки vstfs называются "идентификаторами артефактов" и являются внутренними данными для TFS, которые, как ожидается, будут использоваться только клиентом TFS. Клиент TFS будет анализировать эти данные и определять, как отображать эти данные. Для ссылки набора изменений, как вы предоставляете, богатые клиенты откроют диалог с деталями набора изменений. Веб-клиент переведет эту ссылку в URI. И различные библиотеки TFS могут предоставить вам больше данных об этом артефакте, используя этот идентификатор.
Если вы хотели чтобы создать свою собственную ссылку на TFS Web Access, строго правильный способ сделать это-запросить некоторую информацию на сервере. После создания TswaClientHyperlinkService можно запросить URI веб-доступа для различных служб, таких как просмотр набора изменений или рабочего элемента. Некоторые примеры показаны на блог Мартина Вудворда.
в TFS2012, дополнительный pcguid
параметр URL должен присутствовать. Вот новый формат, расширяющий хорошее решение, данное @TarunArora:
http://ServerName:PortNumber/tfs/web/wi.aspx?pcguid=xxguidxx&id=xxidxx
этот блог описывает, как найти pcguid
через Visual Studio.
однако, если вы, как и я, пытаетесь использовать TFS без установленной Visual Studio (не спрашивайте!), вот альтернатива с использованием интерфейса TFS на основе браузера:
- перейти к "открытым Вопросы"
- нажмите на кнопку, которая выглядит как конверт ("отправить запрос по электронной почте") в верхнем правом углу панели рабочего элемента.
- щелкните правой кнопкой мыши на одной из ссылок в письме и скопировать ссылку
- отменить письмо, не отправляя его.
- вставить ссылку в текстовый редактор и распакуйте
pcguid
значение.