Преобразование конфигурации локатора совпадения без учета регистра - PullRequest
5 голосов
/ 07 июня 2019

Я преобразую значения appsettings в файле web.config в зависимости от среды. Я столкнулся с проблемой, когда есть ключи с тем же именем, но с разными случаями, пример как ниже

Местное значение

<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" />

Я хотел бы заменить значение регистра без учета регистра.

1011 * ТИА *

1 Ответ

5 голосов
/ 25 июня 2019

Вы можете использовать XPath с Condition locator вместо Match. И, используя описанный здесь способ взлома без учета регистра в XPath , вы можете написать:

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

Атрибут key и value бесполезен, так как элементы удалены.

Для редактирования элементов используйте SetAttributes, чтобы не трогать ключи.

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

Я проверил все это здесь .

...