Если вы хотите использовать Xslt, вы можете использовать MSBuild для запуска преобразования в командной строке.
Файл конфигурации app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly" publicKeyToken="32ab4ba45e0a69a1" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Xslt appconfig.xslt
В этом примере xslt скопирует все из исходного файла app.config и добавит узел <appSetting />
, если он не существует:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="configuration">
<xsl:element name="configuration">
<xsl:if test="self::node()[not(appSettings)]">
<xsl:element name="appSettings" />
</xsl:if>
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Сценарий MSBuild appconfig.proj
Этот пример сценария проекта MSBuild скопирует / создаст резервную копию вашего исходного кода app.config и преобразует его с помощью данной таблицы стилей xslt.
<Project ToolsVersion="4.0" DefaultTargets="Transform" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<AppConfigFile Include="app.config" />
</ItemGroup>
<Target Name="Clone">
<Copy SourceFiles="@(AppConfigFile)" DestinationFiles="clone.config">
<Output TaskParameter="CopiedFiles" ItemName="ClonedConfig" />
</Copy>
</Target>
<Target Name="Transform" DependsOnTargets="Clone">
<XslTransformation XslInputPath="appconfig.xslt" XmlInputPaths="@(ClonedConfig)" OutputPaths="app.config" />
</Target>
</Project>
Запуск из командной строки
<path to .NET framework 4>\MSBuild.exe appconfig.proj