不区分大小写的匹配定位器配置转换

时间:2019-06-07 12:10:13

标签: c# web-config web.config-transform

我正在根据环境转换web.config文件中appsettings的值。当存在名称相同但大小写不同的键时,我遇到了一个问题

本地价值

<add xdt:Transform="RemoveAll" xdt:Locator="Match(key)" key="LOGINURL" value="xyf" />

Dev值

<add xdt:Transform="RemoveAll" xdt:Locator="Match(key)" key="LoginUrl" value="abcd" />

我想不区分大小写地替换键的值。

TIA

1 个答案:

答案 0 :(得分:5)

您可以将XPaththe Condition locator一起使用,而不要使用Match。 使用here on building case insensitive matching in XPath所述的技巧,您可以编写以下代码:

<add xdt:Transform="RemoveAll" xdt:Locator= "Condition(translate(@key,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='loginurl')"/>

keyvalue属性是无用的,因为已删除了元素。

要编辑元素,请使用SetAttributes保持键不变。

<add xdt:Transform="SetAttributes" xdt:Locator="Condition(translate(@key,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='loginurl')" value="test.com" />

我测试了所有here