web.config转换为<applicationSettings>

Myc*_*ych 11 .net web-config web.config-transform

我有几个环境的web.config转换.在配置文件中,我有一个applicationSettings部分,其中包含多个设置和值对.

我已经尝试基于我用来匹配名称的语法,并更改连接字符串以匹配设置并更改值但转换失败.这是可能吗?

所以我的web.config有:

<applicationSettings>
    <AppName.My.MySettings>
        <setting name="setting1" serializeAs="String">
            <value>Initial Value</value>
        </setting>
    </AppName.My.MySettings>
</applicationSettings>
Run Code Online (Sandbox Code Playgroud)

我的转换文件有

<applicationSettings>
    <add name="setting1" value="Changed Value" xdt:Transform="SetAttributes" xdt:Location="Match(name)"/>
</applicationSettings>
Run Code Online (Sandbox Code Playgroud)

我预览转换时没有错误,但是连接字符串设置被转换后,setting1的值不是.任何帮助赞赏.

UPDATE

<applicationSettings>
    <add name="setting1" value="Changed Value" xdt:Transform="Replace" xdt:Location="Match(name)"/>
</applicationSettings>
Run Code Online (Sandbox Code Playgroud)

不幸的是同样的问题......没有错误也没有变换.

解决方案我确实忘记提到我有多个设置所以标记答案是部分解决方案......这就是我做到的... Web.Config ...

<applicationSettings>
    <AppName.My.MySettings>
        <setting name="setting1" serializeAs="String">
            <value>Initial Value 1</value>
        </setting>
        <setting name="setting2" serializeAs="String">
            <value>Initial Value 2</value>
        </setting>
        <setting name="setting3" serializeAs="String">
            <value>Initial Value 3</value>
        </setting>
    </AppName.My.MySettings>
</applicationSettings>
Run Code Online (Sandbox Code Playgroud)

转换文件

<applicationSettings xdt:Transform="Replace">
    <AppName.My.MySettings>
        <setting name="setting1" serializeAs="String">
            <value>CHANGED VALUE 1</value>
        </setting>
        <setting name="setting2" serializeAs="String">
            <value>Initial value 2</value>
        </setting>
        <setting name="setting3" serializeAs="String">
            <value>CHANGED VALUE 3</value>
        </setting>
    </AppName.My.MySettings>
</applicationSettings>
Run Code Online (Sandbox Code Playgroud)

注意我必须包括我的所有嵌套设置和值,即使它们中的一些没有像在我的示例中设置2的情况那样改变.

小智 24

我知道这有点晚了,但是当你有多个时,下面的转换文件将允许你只转换一个设置.

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <applicationSettings>
    <YourProject.Settings>
      <setting name="Log4NetPath" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)">
        <value xdt:Transform="Replace">NewPath</value>
      </setting>
    </YourProject.Settings>
  </applicationSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)


Asi*_*ndo 7

转换文件:

<applicationSettings>
   <AppName.My.MySettings>
      <setting xdt:Transform="Replace" xdt:Locator="Match(name)" name="setting1" serializeAs="String">
           <value>New Value</value>
       </setting>
    </AppName.My.MySettings>
  </applicationSettings>
Run Code Online (Sandbox Code Playgroud)


Tho*_*ins -4

原始文件:

<applicationSettings>
    <AppName.My.MySettings>
        <setting name="setting1" serializeAs="String">
            <value>Initial Value</value>
        </setting>
    </AppName.My.MySettings>
</applicationSettings>
Run Code Online (Sandbox Code Playgroud)

转换文件:

 <applicationSettings>
   <AppName.My.MySettings>
      <setting name="setting1" serializeAs="String">
           <value xdt:Transform="Replace">Changed Value</value>
       </setting>
    </AppName.My.MySettings>
  </applicationSettings>
Run Code Online (Sandbox Code Playgroud)