自定义部分的 Web 配置转换

Web config transform for custom section

我的 MVC 5 应用程序中有许多不同的 Web.configs 用于不同的环境 - 例如Test/Prod

我有适当的 Web 转换来更改不同环境的值。例如,我的 web.config 文件中有以下应用程序设置:

<appSettings>
<add key="DevDisplayPanel" value="true" />
</appSettings>

然后在我的 Web.Test.config 和 Web.Prod.config 中使用网络转换来更改值,如下所示:

<appSettings>
<add key="DevDisplayPanel" 
     xdt:Transform="Replace" 
     xdt:Locator="Match(key)" 
     value="false" />
<appSettings>

但是在我的 Web.config 中,我还有自己的自定义部分,它位于 <appSettings> 部分之外,如下所示:

  <myCustomSection>
    <serverList>
      <add zone="Zone1" url="https://dev-myurl1.com"/>
      <add zone="Zone2" url="https://dev-myurl2.com"/>
      <add zone="Zone2" url="https://dev-myurl3.com"/>
    </serverList>
  </myCustomSection>

我的问题是 - 是否可以进行 Web 转换,以便测试和生产看起来如下所示:

测试:

  <myCustomSection>
    <serverList>
      <add zone="Zone1" url="https://test-myurl1.com"/>
      <add zone="Zone2" url="https://test-myurl2.com"/>
      <add zone="Zone2" url="https://test-myurl3.com"/>
    </serverList>
  </myCustomSection>

产品:

  <myCustomSection>
    <serverList>
      <add zone="Zone1" url="https://prod-myurl1.com"/>
      <add zone="Zone2" url="https://prod-myurl2.com"/>
      <add zone="Zone2" url="https://prod-myurl3.com"/>
    </serverList>
  </myCustomSection>

您可以尝试替换 <serverList> 标签的内容。

测试:

<myCustomSection>
    <serverList xdt:Transform="Replace">
        <add zone="Zone1" url="https://test-myurl1.com"/>
        <add zone="Zone2" url="https://test-myurl2.com"/>
        <add zone="Zone2" url="https://test-myurl3.com"/>
    </serverList>
</myCustomSection>

产品:

<myCustomSection>
    <serverList xdt:Transform="Replace">
        <add zone="Zone1" url="https://prod-myurl1.com"/>
        <add zone="Zone2" url="https://prod-myurl2.com"/>
        <add zone="Zone2" url="https://prod-myurl3.com"/>
    </serverList>
</myCustomSection>