如何使用 Web.config 转换更改应用设置部分中属性的值
本文关键字:设置部 属性 应用 Web 何使用 config 转换 | 更新日期: 2023-09-27 18:37:05
是否可以转换以下 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>
因此,我需要删除密钥开发模式用户 ID,并且我需要替换密钥开发模式的值。
你想要这样的东西:
<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 应用程序项目部署的 Web.config 转换语法
替换所有应用设置
这是矫枉过正的情况,您只想替换 web.config 的整个部分。 在这种情况下,我将替换web.config中的所有AppSettings和web.release.config中的新设置。 这是我的基线web.config应用程序设置:
<appSettings>
<add key="KeyA" value="ValA"/>
<add key="KeyB" value="ValB"/>
</appSettings>
现在在我的web.release.config文件中,我将创建一个appSettings部分,除了我将包含属性xdt:Transform="Replace",因为我只想替换整个元素。 我不必使用 xdt:定位器,因为没有什么可定位的——我只想把石板擦干净并更换所有东西。
<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.config appSettings 完全被 web.release config 中的值所取代。 这很容易!
如果要将应用设置从 Web 配置文件转换为 Web。发布.config,您必须执行以下步骤。让你的web.config应用设置文件是这样的-
<appSettings>
<add key ="K1" value="Debendra Dash"/>
</appSettings>
现在这里是网络。Release.config 用于转换。
<appSettings>
<add key="K1" value="value dynamicly from Realease"
xdt:Transform="SetAttributes"
xdt:Locator="Match(key)"
/>
</appSettings>
这会将 K1 的值转换为真实模式下的新值。
我不喜欢转换包含比需要更多的信息。因此,我不是重述密钥,而是简单地陈述条件和意图。这样做更容易看到意图,至少 IMO 是这样。此外,我尝试将所有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
.