Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TFS 2017构建通知不包括;关联变更集“;地区_Tfs - Fatal编程技术网

TFS 2017构建通知不包括;关联变更集“;地区

TFS 2017构建通知不包括;关联变更集“;地区,tfs,Tfs,我们最近从2010年TFS升级到2017年TFS。我们为某些项目设置了构建通知,这些项目会发送电子邮件,告知构建成功与否以及构建的详细信息。在此之前,这封电子邮件包括一个失败的单元测试列表以及一个相关变更集列表。但是,升级到2017年TFS后,构建通知电子邮件中不包括这两项内容。据我所知,我们没有对TFS 2010的警报模板进行任何修改,以将丢失的信息输入电子邮件。有没有办法在TFS 2017构建通知电子邮件上获取失败单元测试和相关变更集的列表?这是新vNext构建的用户语音。变更集数据和关联的

我们最近从2010年TFS升级到2017年TFS。我们为某些项目设置了构建通知,这些项目会发送电子邮件,告知构建成功与否以及构建的详细信息。在此之前,这封电子邮件包括一个失败的单元测试列表以及一个相关变更集列表。但是,升级到2017年TFS后,构建通知电子邮件中不包括这两项内容。据我所知,我们没有对TFS 2010的警报模板进行任何修改,以将丢失的信息输入电子邮件。有没有办法在TFS 2017构建通知电子邮件上获取失败单元测试和相关变更集的列表?

这是新vNext构建的用户语音。变更集数据和关联的工作项似乎没有公开给defaultBuildCompletedEvent.xsl

使用TFS 2015构建(构建vNext)电子邮件警报不会显示相关的签入


现在您可能需要定制您的电子邮件警报<代码>驱动器:\%StudioFiels%\微软Team Foundation Server 1x。0应用层\tfsJooAgent \转换\ 1033 < /代码>。更多详情请参考

我有一个部分解决方案。看起来工作项不可用,但变更集可用,只是有一些不同的名称

首先,我打开了<代码> %StudioFiels%\微软Team Foundation Server 1x。0应用层\ TfsJoBase\Trave\\\\BubdRealEdEdvound.xSL\/Cord>,并替换它的内容,以将源XML转储回去。保留此文件的旧内容,因为以后需要对其进行编辑

<xsl:template match="/">
    <xsl:copy-of select="."/>
</xsl:template>
把这件事摆在面前:

<xsl:if test="count(tb:Build/tb:Information/tb:BuildInformationNode[@Type = 'AssociatedCommit']) > 0">
  <h2 style="font-size: 12pt; margin-bottom: 0em;">
    <span _locID="AssociatedCommits">Associated Commits</span>
  </h2>
  <div style="margin-left:1em">
    <table style="font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-size: 10pt;">
      <xsl:apply-templates select="tb:Build/tb:Information/tb:BuildInformationNode[@Type = 'AssociatedCommit']">
        <xsl:sort select="tb:Fields/tb:InformationField[@Name = 'CommitId']/@Value"/>
      </xsl:apply-templates>
    </table>
  </div>
</xsl:if>
<xsl:template match="tb:BuildInformationNode[@Type = 'AssociatedCommit']">
  <tr>
    <td style="padding-right:2em">
      <strong>
        <xsl:value-of select="tb:Fields/tb:InformationField[@Name = 'Author']/@Value"/>.
      </strong>
      <xsl:call-template name="linefeed2br">
        <xsl:with-param name="StringToTransform" select="tb:Fields/tb:InformationField[@Name = 'Comment']/@Value"/>
      </xsl:call-template>
      - 
      <a>
      <xsl:variable name="href" select="tb:Fields/tb:InformationField[@Name = 'Uri']/@Value"/>
        <xsl:variable name="fragment" select="'/_apis/tfvc/changesets/'"/>
        <xsl:attribute name="href">
          <!--<xsl:value-of select="replace(tb:Fields/tb:InformationField[@Name = 'Uri']/@Value, '/_apis/tfvc/changesets/', '/_versionControl/changeset/')"/>-->
          <xsl:value-of select="substring-before($href,$fragment)"/>
          <xsl:value-of select="'/_versionControl/changeset/'"/>
          <xsl:value-of select="substring-after($href,$fragment)"/>
        </xsl:attribute>
        Changeset <xsl:value-of select="tb:Fields/tb:InformationField[@Name = 'CommitId']/@Value"/>
      </a>
    </td>
  </tr>
</xsl:template>
我添加到现有模板中,而不是更改损坏的引用。我希望,如果TFS升级将模型名称更改回原来的名称,那么模板仍将匹配它们并将它们拉出来,而无需我编辑任何内容

还要注意,在更改之后,需要做一些事情来让TFS看到新模板。执行此操作时,我正在重新启动TFS服务:

TFSServiceControl quiesce|unquiesce

我没有提取单元测试失败的源XML,但是如果其他人提取了,并且显示了测试失败的详细信息,请共享您更新的XSL。

您也可以尝试。它也不显示变更集,但您可以单击构建以在浏览器中查看这些详细信息。谢谢你,谢谢你!我们能够在构建通知电子邮件中获得相关的提交(ne:changeset)列表。不幸的是,我们仍然无法获得失败的测试-它们似乎没有包含在生成的XML中。不幸的是,这是唯一可以添加到模板中的whing。我们还需要工作项,但不支持这些工作项。
<xsl:template match="tb:BuildInformationNode[@Type = 'AssociatedCommit']">
  <tr>
    <td style="padding-right:2em">
      <strong>
        <xsl:value-of select="tb:Fields/tb:InformationField[@Name = 'Author']/@Value"/>.
      </strong>
      <xsl:call-template name="linefeed2br">
        <xsl:with-param name="StringToTransform" select="tb:Fields/tb:InformationField[@Name = 'Comment']/@Value"/>
      </xsl:call-template>
      - 
      <a>
      <xsl:variable name="href" select="tb:Fields/tb:InformationField[@Name = 'Uri']/@Value"/>
        <xsl:variable name="fragment" select="'/_apis/tfvc/changesets/'"/>
        <xsl:attribute name="href">
          <!--<xsl:value-of select="replace(tb:Fields/tb:InformationField[@Name = 'Uri']/@Value, '/_apis/tfvc/changesets/', '/_versionControl/changeset/')"/>-->
          <xsl:value-of select="substring-before($href,$fragment)"/>
          <xsl:value-of select="'/_versionControl/changeset/'"/>
          <xsl:value-of select="substring-after($href,$fragment)"/>
        </xsl:attribute>
        Changeset <xsl:value-of select="tb:Fields/tb:InformationField[@Name = 'CommitId']/@Value"/>
      </a>
    </td>
  </tr>
</xsl:template>
http://tfs:8080/tfs/DefaultCollection/_apis/tfvc/changesets/10516
http://tfs:8080/tfs/DefaultCollection/_versionControl/changeset/10516
TFSServiceControl quiesce|unquiesce