Как сделать необязательное преобразование? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть преобразование конфигурации, которое среди других действий вставляет smtpClient узел в MyAppSettings:

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <MyAppSettings>
    <smtpClient xdt:Transform="Insert">
      <!-- other tags -->
    </smtpClient>
  </MyAppSettings>
</configuration>

Моя проблема заключается в том, что он будет применен ко многим Web.config файлам из разных проектов.У некоторых из них есть MyAppSettings узел:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!-- other sections -->

  <MyAppSettings/>
</configuration>

, а у некоторых нет:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!-- other sections -->
</configuration>

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

Transformation.xml (4,6): ошибка: ни один элемент в исходном документе не соответствует '/ configuration / MyAppSettings / smtpClint'

Я пытался исправить эту ошибкус Condition:

<smtpClient
  xdt:Locator="Condition(/configuration/MyAppSettings)"
  xdt:Transform="InsertAfter(/configuration/MyAppSettings)">
</smtpClient>

но это дало мне ту же ошибку (и я не думаю, что InsertAfter вставит в правильное место).

Как я могу сделать эту вставкуПравило необязательно?Я имею в виду, что если нет узла "/ configuration / MyAppSettings", просто пропустите это правило и примените другие преобразования.

...