使用属性对自定义部分进行 Web.config 转换

问题描述 投票:0回答:1

我想使用转换文件转换“web.config”文件的一部分,但我尝试更改的值位于具有属性的部分内,如果我不指定每个先前的属性,则不会发生转换部分。

这是原始的“web.config”部分:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="true"
      internalLogLevel="Trace" internalLogFile="c:\projets\nlog-internal.log">
    <targets>
      <target name="database" xsi:type="Database" dbProvider="Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess" keepConnection="false" useTransactions="true"
            connectionString="Data Source=myInstance;User Id=myUserId;Password=myPassword;Validate Connection=true"
            commandType="Text" commandText="INSERT INTO LOG (DATE_LOG, LEVEL_LOG, MESSAGE, LOGGER, EXCEPTION) VALUES (TO_DATE(SUBSTR(:LogDate, 1, 19), 'YYYY/MM/DD HH24:MI:SS'), :LogLevel, :Message, :Logger, :Exception)">
        <parameter name="LogDate" layout="${date:format=yyyy/MM/dd HH\:mm\:ss}" />
        <parameter name="LogLevel" layout="${level}" />
        <parameter name="Message" layout="${message}" />
        <parameter name="Logger" layout="${logger}" />
        <parameter name="Exception" layout="${exception:tostring}" />
      </target>
    </targets>
    <rules>
      <logger name="*" minlevel="Trace" writeTo="database" />
    </rules>
  </nlog>

我想更改名称为“database”的“target”的“connectionString”属性的值。

这是效果很好的转换:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd">
    <targets>
      <target name="database" connectionString="Data Source=myNewInstance;User Id=myNewUser;Password=myNewPassword;Validate Connection=true" xdt:Locator="Match(name)" xdt:Transform="SetAttributes(connectionString)"></target>
    </targets>
  </nlog>

我的问题是:

有没有办法告诉转换文件始终更改“web.config”的第一个“nlog”部分,而不必编写所有 xmlns 和 xsi 属性?只有这样的东西会更干净:

<nlog>
    <targets>
      <target name="database" connectionString="Data Source=myNewInstance;User Id=myNewUser;Password=myNewPassword;Validate Connection=true" xdt:Locator="Match(name)" xdt:Transform="SetAttributes(connectionString)"></target>
    </targets>
  </nlog>

但不幸的是,它不起作用......

xml web-config nlog web-config-transform
1个回答
0
投票

我使用 SlowCheetah 来转换我的所有配置文件。 适用于任何与 *.config 相关的内容。 轻松为不同的部署添加构建配置转换。

不确定这是否适合您。

微软慢猎豹

© www.soinside.com 2019 - 2024. All rights reserved.