Мы используем Xslt для преобразования наших app.configs для другого уровня развертывания (qa, prod и т. Д.)
вывод этого первого прохода правильный:
<add name="MyADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString" connectionUsername="XXXXX" connectionPassword="XXXXXXX" attributeMapUsername="SAMAccountName" />
сейчас я пишу инструмент для CM, чтобы поменять все пароли и учетные записи (которые нам, разработчикам, не разрешено знать), запустив secodn pass fo xlst (непосредственно из .Net 4)
но это вывод с НЕКОТОРЫМИ двойными кавычками (но не с другими ...)
<add name="MyADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString" connectionUsername="NewAdMemberUser" connectionPassword="NewAdMemberPass" attributeMapUsername="SAMAccountName" connectionStringName="ADConnectionString" connectionUsername="XXXXX" connectionPassword="XXXXXX" attributeMapUsername="SAMAccountName" />
Я попытался уменьшить XSLT, чтобы упростить проблему, даже удалив строки, которые касаются поставщика, и он по-прежнему выводится по-другому.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:exsl="http://exslt.org/common"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl xs exsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|*|text()">
<xsl:copy>
<xsl:apply-templates select="@*|*|text()"/>
</xsl:copy>
</xsl:template>
<!--Fix AdMembership Provider login-->
<xsl:template match="/configuration/system.web/membership/providers/add[@name='MyADMembershipProvider']/@connectionUsername" >
<xsl:attribute name="connectionUsername">
<xsl:text disable-output-escaping= "yes" >NewAdMemberUser</xsl:text>
</xsl:attribute>
</xsl:template>
<!--remove blank lines leaving blank spaces-->
<xsl:strip-space elements="*" />
</xsl:stylesheet>
Так, что я делаю, чтобы вызвать поведение? они оба используют .Net XML методы преобразования. Почему меняются только НЕКОТОРЫЕ в двойных кавычках, когда эта строка выводится.
Интересует новая информация.
Используя инструмент, который я написал для запуска .Net4 Transforms, мой входной файл prod вызывает проблему, а мой входной файл QA - нет. Я сделал Comaison бок о бок и не вижу ничего отличного, что не закомментировано в Prod ... странный
Спасибо,
кальцит