C # применять преобразование app.config не работает с родительского уровня на дочерний - PullRequest
0 голосов
/ 03 сентября 2018

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

Пример сервисной записи

<configuration>
     <cronService>
            <cronSettings>
                <services>
                    <service name="Name1" assembly="xxx.yyy.Applications.dll" interval="300" wakeUpTime="" onErrorEmail="developmentteam@zzz.com" continueAfterError="true" notifyEmailOnError="true" runOnStart="true" enable="true" />
    <service name="Name2" assembly="xxx.lll.Applications.dll" interval="300" wakeUpTime="" onErrorEmail="developmentteam@zzz.com" continueAfterError="true" notifyEmailOnError="true" runOnStart="true" enable="true" />
                </services>
            </cronSettings>
        </cronService>
</configuration>

В файле преобразования я попытался применить xdt: Transform на родительском уровне и ожидал, что дочерний элемент будет изменен

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <cronService>
        <cronSettings emailSender="{AppTierCloudService}@zzz.com" xdt:Transform="SetAttributes" >
        <services xdt:Transform="SetAttributes" >
            <service onErrorEmail="developmentteam@www.com, abb@www.com"/>
        </services>
        </cronSettings>
    </cronService>
</configuration>

передал это https://msdn.microsoft.com/en-us/library/dd465326.aspx.

Но трансформации не происходит. Любая помощь?

1 Ответ

0 голосов
/ 03 сентября 2018

Добавление xdt:Transform="SetAttributes" в дочернюю работу.

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <cronService>
        <cronSettings emailSender="{AppTierCloudService}@zzz.com" xdt:Transform="SetAttributes">
            <services>
                <service onErrorEmail="developmentteam@www.com, abb@www.com" xdt:Transform="SetAttributes" />
            </services>
        </cronSettings>
    </cronService>
</configuration>

После преобразования XML выглядит так:

<configuration>
    <cronService>
        <cronSettings emailSender="{AppTierCloudService}@zzz.com">
            <services>
                <service name="Name1" assembly="xxx.yyy.Applications.dll" interval="300" wakeUpTime="" onErrorEmail="developmentteam@www.com, abb@www.com" continueAfterError="true" notifyEmailOnError="true" runOnStart="true" enable="true" />
                <service name="Name2" assembly="xxx.lll.Applications.dll" interval="300" wakeUpTime="" onErrorEmail="developmentteam@www.com, abb@www.com" continueAfterError="true" notifyEmailOnError="true" runOnStart="true" enable="true" />
            </services>
        </cronSettings>
    </cronService>
</configuration>

Особая благодарность @Kirk Larkin за показ этого инструмента проверки мгновенного преобразования: https://webconfigtransformationtester.apphb.com.

...