如何使用Web.config转换更改appSettings部分中的属性值

dra*_*fly 248 .net c# asp.net web-config

是否可以转换以下Web.config appSettings文件:

<appSettings>
    <add key="developmentModeUserId" value="00297022" />
    <add key="developmentMode" value="true" />
    /* other settings here that should stay */
</appSettings>
Run Code Online (Sandbox Code Playgroud)

进入这样的事情:

<appSettings>
    <add key="developmentMode" value="false" />
    /* other settings here that should stay */
</appSettings>
Run Code Online (Sandbox Code Playgroud)

所以,我需要删除关键的developmentModeUserId,我需要替换关键developmentMode的值.

Joe*_*Joe 436

你想要的东西:

<appSettings>
  <add key="developmentModeUserId" xdt:Transform="Remove" xdt:Locator="Match(key)"/>
  <add key="developmentMode" value="false" xdt:Transform="SetAttributes"
          xdt:Locator="Match(key)"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

另请参阅:Web应用程序项目部署的Web.config转换语法

  • 请注意,键区分大小写! (24认同)
  • 只是一个可以帮助某些人的一个小小的澄清:`xdt:Transform ="SetAttributes"xdt:Locator ="Match(key)"`部分应该在Web.Whatever.config中使用,而不是在Web.config文件中. (3认同)
  • 极好的答案。我正在尝试诸如“慢猎豹”之类的第三方选择,却一无所获-这是简单而完美的。 (2认同)
  • @stevens:如果你想改造本地应用程序的app.config文件,你需要慢速猎豹.但是,如果我记得(因为我必须使用Slow Cheetah已经有一段时间了),语法应该是相同的. (2认同)

小智 11

取代所有AppSettings

在这种情况下,您只想替换web.config的整个部分,就显得有些大材小用。在这种情况下,我将替换web.config中的所有AppSettings并将web.release.config中的新设置。这是我的基准web.config appSettings:

<appSettings>
  <add key="KeyA" value="ValA"/>
  <add key="KeyB" value="ValB"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

现在在我的web.release.config文件中,我将创建一个appSettings部分,除了我将包括属性xdt:Transform =“ Replace”之外,因为我只想替换整个元素。我不必使用xdt:Locator,因为没有什么可定位的–我只想擦拭石板并更换所有东西。

<appSettings xdt:Transform="Replace">
  <add key="ProdKeyA" value="ProdValA"/>
  <add key="ProdKeyB" value="ProdValB"/>
  <add key="ProdKeyC" value="ProdValC"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

请注意,在web.release.config文件中,我的appSettings部分具有三个键而不是两个键,并且键甚至都不相同。现在,让我们看看生成的web.config文件在发布时会发生什么:

<appSettings>
   <add key="ProdKeyA" value="ProdValA"/>
   <add key="ProdKeyB" value="ProdValB"/>
   <add key="ProdKeyC" value="ProdValC"/>
 </appSettings>
Run Code Online (Sandbox Code Playgroud)

就像我们期望的那样-web.config appSettings被web.release配置中的值完全替代。那很简单!


Deb*_*ash 9

如果要将应用程序设置从Web配置文件转换为web.Release.config,则必须执行以下步骤.让你的w​​eb.config应用程序设置文件是这样的 -

<appSettings>
     <add key ="K1" value="Debendra Dash"/>
  </appSettings>
Run Code Online (Sandbox Code Playgroud)

现在这里是转换的web.Release.config.

<appSettings>
    <add key="K1" value="value dynamicly from Realease"
       xdt:Transform="SetAttributes"
          xdt:Locator="Match(key)"   
         />
  </appSettings>
Run Code Online (Sandbox Code Playgroud)

这将在Realese模式下将K1的值转换为新值.