Лучшим способом для меня было вставить элемент, только если он не существует, так как я устанавливаю только определенные атрибуты.Удаление элемента приведет к удалению любых других атрибутов основного элемента, если они существуют.
пример: web.config (без элемента)
<serviceBehaviors>
<behavior name="Wcf.ServiceImplementation.AllDigitalService_Behavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
web.config (с элементом)
<serviceBehaviors>
<behavior name="Wcf.ServiceImplementation.AllDigitalService_Behavior">
<serviceDebug httpsHelpPageEnabled="true" />
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
Используя локатор с выражением XPath, я добавляю узел, если он не существует, и затем устанавливаю свой атрибут:
<serviceDebug xdt:Transform="Insert"
xdt:Locator="XPath(/configuration/system.serviceModel/behaviors/serviceBehaviors/behavior[not(serviceDebug)])" />
<serviceDebug includeExceptionDetailInFaults="true" xdt:Transform="SetAttributes" />
оба полученных файла web.config имеют includeExceptionDetailInFaults = "true"и второй сохраняет атрибут httpsHelpPageEnabled, где метод удаления / вставки не будет.