.net 如何通过Web.config转换更改appSettings部分中的属性值

chy5wohz  于 2023-05-23  发布在  .NET
关注(0)|答案(4)|浏览(219)

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

<appSettings>
    <add key="developmentModeUserId" value="00297022" />
    <add key="developmentMode" value="true" />
    <!-- other settings here that should stay -->
</appSettings>

变成这样:

<appSettings>
    <add key="developmentMode" value="false" />
    <!-- other settings here that should stay -->
</appSettings>

因此,我需要删除键developmentModeUserId,并替换键developmentMode的值。

rkue9o1l

rkue9o1l1#

你想要的是:

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

标签:Web.config Transformation Syntax for Web Application Project Deployment

u0sqgete

u0sqgete2#

替换所有AppSettings

这是一种过度的情况,您只想替换web. config的整个部分。在这种情况下,我将替换所有的AppSettings在web.config将新的设置在web. release. config。这是我的基线web.config appSettings:

<appSettings>
  <add key="KeyA" value="ValA"/>
  <add key="KeyB" value="ValB"/>
</appSettings>

现在,在我的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>

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

<appSettings>
   <add key="ProdKeyA" value="ProdValA"/>
   <add key="ProdKeyB" value="ProdValB"/>
   <add key="ProdKeyC" value="ProdValC"/>
 </appSettings>

正如我们所料-web. configappSettings完全被web.release config中的值所取代。太简单了!

jqjz2hbq

jqjz2hbq3#

如果你想将你的应用设置从web配置文件转换为web.Release.config,你必须执行以下步骤。让您的web.config应用程序设置文件是这个-

<appSettings>
     <add key ="K1" value="Debendra Dash"/>
  </appSettings>

下面是用于转换的web.Release.config。

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

这会将K1的值转换为realese模式下的新值。

mi7gmzs6

mi7gmzs64#

我不喜欢转换有任何比需要更多的信息。因此,我不重复这些关键,而是简单地陈述条件意图。当这样做时,更容易看到意图,至少海事组织。此外,我尝试将所有xdt属性放在第一位,以向读者表明,这些都是转换,而不是新定义的东西。

<appSettings>
  <add xdt:Locator="Condition(@key='developmentModeUserId')" xdt:Transform="Remove" />
  <add xdt:Locator="Condition(@key='developmentMode')" xdt:Transform="SetAttributes"
       value="false"/>
</appSettings>

在上面,很容易看到第一个是移除元素。第二,设置属性。它将设置/替换您在此处定义的任何属性。在这种情况下,它将简单地将value设置为false

相关问题