是否可以转换以下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 的值。
答案 0 :(得分:419)
你想要这样的东西:
<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
答案 1 :(得分:7)
如果要将应用程序设置从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模式中的新值。
答案 2 :(得分:5)
替换所有AppSettings
这是一个过度杀伤的情况,你只想替换web.config的整个部分。在这种情况下,我将替换web.config中的所有AppSettings将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.config appSettings完全被web.release配置中的值取代。那很简单!
答案 3 :(得分:0)
我不希望转换包含比所需更多的信息。因此,我只需要声明条件和意图,而不是重新声明键。至少在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
。