6

我们基于自上次部署构建以来变更集和相关工作项的历史以编程方式生成部署电子邮件。它们看起来有点像 Visual Studio 中的构建摘要信息(但结合了许多构建)。

数据中似乎有有用的 URL(例如vstfs:///VersionControl/Changeset/205151),但是对于 TFS SDK 的新手,我不知道是否/如何将其映射到可查看的项目(例如 http:// tfsserver:port/somepath /...)。Visual Studio 中的构建摘要链接是可点击的,但它们是 VS-only 链接吗?

如果可能的话,我们希望在电子邮件中包含打开相关项目的链接(在浏览器中?),所以我想我需要知道 TFS 路径是否可以通过网络浏览,如果可以,如何?

欢迎提出建议。谢谢。

4

4 回答 4

13

这是我用来访问工作项的 uRl,

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

编辑 我指定的格式确实适用于 TFS 2010。它基本上在 Web 视图中生成工作项的路径。单击此按钮将在 Web 视图中打开工作项。

作为替代方案,您也可以通过编程方式获得可导航的 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 超链接服务。这将生成绝对路径、相对路径、路径和查询等的 url 格式。

高温下,

干杯,塔伦

PS - 我讨厌错了!!!哈哈哈…… 在此处输入图像描述

编辑 因为在你的情况下你有可用的 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

高温下,

干杯,塔伦

于 2011-06-25T20:27:43.007 回答
6

以下似乎是访问工作项的标准 url

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

于 2011-06-24T10:31:56.307 回答
3

vstfs 链接称为“工件 ID”,是 TFS 的内部数据,预计仅由 TFS 客户端使用。TFS 客户端将解析该数据并确定如何显示该数据。对于您提供的变更集链接,富客户端将打开一个包含变更集详细信息的对话框。Web 客户端会将该链接转换为 URI。并且各种 TFS 库能够使用该 ID 为您提供有关此工件的更多数据。

如果您想创建自己的 TFS Web 访问链接,那么执行此操作的正确方法是查询服务器上的一些信息。拥有 TswaClientHyperlinkService 后,您可以查询各种服务的 Web 访问 URI,例如查看变更集或查看工作项。Martin Woodward 的博客中显示了一些示例。

于 2011-06-24T13:44:21.913 回答
0

在 TFS2012 中,需要提供一个额外的pcguidURL 参数。这是新格式,扩展了@TarunArora 给出的良好解决方案:

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

这篇博文描述了如何pcguid通过 Visual Studio 找到。

但是,如果您像我一样尝试在未安装 Visual Studio 的情况下使用 TFS(不要问!),这是使用基于浏览器的 TFS 界面的替代方法:

  1. 转到“未解决的问题”
  2. 单击工作项窗格右上角的类似信封的按钮(“以电子邮件形式发送查询”)。
  3. 右键单击电子邮件中的链接之一并复制链接位置
  4. 取消电子邮件而不发送。
  5. 将链接位置粘贴到文本编辑器中并提取pcguid值。
于 2014-07-28T16:21:30.650 回答