Ответ может быть немного запоздалым, но, поскольку мне это тоже нужно, я решил опубликовать ответ, который сработает для меня, если кто-нибудь еще наткнется на этот вопрос.
Вам нужно использовать xdt: Locator в сочетании с выражением xpath, чтобы получить правильный узел. Так что-то вроде этого должно работать.
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.connection_string" xdt:Locator="XPath(//*[local-name()='hibernate-configuration']//*[local-name()='property'][@name='connection.connection_string'])" xdt:Transform="Replace">(production connection string)</property>
</session-factory>
</hibernate-configuration>
Возможно, лучше выражение xpath, но это то, что у меня сработало.
Единственная проблема, которая не так уж и сложна, заключается в том, что на замененном узле будет повторно объявлено пространство имен на узле. Таким образом, замененный узел на самом деле будет выглядеть так в конечном выводе.
<property name="connection.connection_string" xmlns="urn:nhibernate-configuration-2.2">(production connection string)</property>