如何使用Web更改appSettings部分的属性值。配置转换

是否有可能转换以下Web。配置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的值。

120101 次浏览

你想要的是:

<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应用程序项目部署的转换语法

替换所有AppSettings

这是一种过度的情况,您只是想替换web.config的整个部分。在这种情况下,我将替换web中的所有AppSettings。Config将在web.release.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。配置文件当我们发布时会发生什么:

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

正如我们所预料的——网络。config appSettings完全被web中的值所取代。发布配置。这很简单!

如果你想把你的应用程序设置从web配置文件转换为web. release。配置时,您必须执行以下步骤。 让你的网。配置应用程序设置文件是这样的-

<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的值转换为新值。

我不喜欢转换有任何超过所需的信息。因此,我没有重述键,而是简单地声明条件意图。这样做更容易看出意图,至少在我看来是这样。此外,我尝试将所有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