【问题标题】:How to map a TFS item url to something viewable如何将 TFS 项目 url 映射到可见的东西
【发布时间】:2011-09-21 22:14:17
【问题描述】:

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

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

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

欢迎提出建议。谢谢。

【问题讨论】:

    标签: tfs tfs-sdk


    【解决方案1】:

    这是我用来访问工作项的 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 格式,等等等等。

    HTH,

    干杯,塔伦

    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

    HTH,

    干杯,塔伦

    【讨论】:

    • tfs/web/wi.aspx 这并不等同于我们 2008 TFS 服务器上的有效页面。 Daniel 的工作项解决方案与 Edward 添加的变更集一样有效。
    【解决方案2】:

    【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

      This blog post 描述了如何通过 Visual Studio 找到 pcguid

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多