Преобразование пользовательских настроек с помощью slowCheetah


Я пытаюсь изменить конфигурацию пользователя по умолчанию в соответствии с профилем сборки с slowCheetah, однако я не могу найти правильный способ его использования

<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="MyApp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <MyApp.Properties.Settings>
            <setting name="Url" serializeAs="String">
                <value>
                    something
                </value>
            </setting>
        </MyApp.Properties.Settings>
    </userSettings>
</configuration>

Я пытался

<!-- &amp it's an & escaped in xml-->
<add key="MyApp.Properties.Settings.Url" value="www.google.com" xdt:Transform="Replace" xdt:Locator="Match(key)"/>

Но это не работает.

Как я могу это сделать?

1 4

1 ответ:

Если я правильно понял, у вас есть это:

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="MyApp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <MyApp.Properties.Settings>
            <setting name="Url" serializeAs="String">
                <value>
                    something
                </value>
            </setting>
        </MyApp.Properties.Settings>
    </userSettings>
</configuration>

И вы хотите преобразовать его в:

(заменить <value>something</value> на <value>www.google.com</value>

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="MyApp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <MyApp.Properties.Settings>
            <setting name="Url" serializeAs="String">
                <value>
                    www.google.com
                </value>
            </setting>
        </MyApp.Properties.Settings>
    </userSettings>
</configuration>

Самый простой способ сделать это-иметь следующий текст в файле преобразования:

<?xml version="1.0"?>

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <userSettings>
        <MyApp.Properties.Settings>
            <setting name="Url" serializeAs="String">
                <value xdt:Transform="Replace">
                    www.google.com
                </value>
            </setting>
        </MyApp.Properties.Settings>
    </userSettings>
</configuration>

Он заменяет (<value xdt:Transform="Replace">) ваш <value></value> текст, который вы хотите.

Или если вы хотите выбрать раздел для замены атрибутом name="Url":

<?xml version="1.0"?>

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <userSettings>
        <MyApp.Properties.Settings>
            <setting name="Url" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)">
                <value>
                    www.google.com
                </value>
            </setting>
        </MyApp.Properties.Settings>
    </userSettings>
</configuration>

Мы делаем то же самое действие здесь (заменить: xdt:Transform="Replace"), но мы достигаем значения, чтобы изменить путем сопоставления атрибута: xdt:Locator="Match(name)"