XDT Transform: InsertBefore - условие локатора игнорируется

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

Если он уже существует, я нене хочу вставлять его снова (очевидно, так как он может существовать только один раз).

Как правило, это не будет проблемой, однако:

Если этот элемент находится в файле конфигурации, он должен быть первым дочерним элементом элемента.

Источник: MSDN.

Так что, если я используюxdt:Transform="InsertIfMissing"  Элемент всегда будет вставлен после любых существующих дочерних элементов (и всегда есть некоторые), нарушая указанное выше ограничение того, что он должен быть первым дочерним элементом

Я попытался сделать эту работу следующим образом:

 

Который работает идеально, если элемент нет уже существует. Тем не менее, состояние яуказанно, кажется, игнорируется.

На самом деле, ямы пробовали несколько условий, таких как:

Condition(not(/configuration[configSections]))
Condition(/configuration[configSections] = false())
Condition(not(/configuration/configSections))
Condition(/configuration/configSections = false())

Наконец, в отчаянии я попытался:

Condition(true() = false()) 

Он все еще вставил элемент.

Важно отметить, что яя пытаюсь включить это в пакет NuGet, поэтому я не смогу использовать пользовательское преобразование (как тот, который использует AppHarbor).

Есть ли какой-нибудь другой умный способ доставить мою стихию в нужное место, только если она нет еще существует?

Чтобы проверить это, используйтеТестер преобразования конфигурации AppHarbors, Замените Web.config следующим:



  
    
  

И Web.Debug.config со следующим:




  

  
    
  


Результат покажет два элементы, содержащие "секции MySection» будучи первым, как указано в Transform InsertBefore. Почему условие локатора не было принято во внимание?

Ответы на вопрос(1)

Ваш ответ на вопрос