Перейти к содержимому

Трансформация web.config & NHibernate

Трансформация web.config'а может не работать, если в нем есть секция nhibernate

Трансформация web.config'а может не работать, если в нем есть секция nhibernate. Далее я расскажу как починить эту проблемку
В некоторых конфигурациях билд серверов или девелоперских машин трансформ web.config'а с определенной в нем секцией <hibernate-configuration> может не работать с довольно-таки невнятной ошибкой:

No element in the source document matches '/configuration/hibernate-configuration'

Проблема заключается в том, что у нода hibernate-configuration, для правильной работы NHibernate, должен быть определен аттрибут xmlns="urn:nhibernate-configuration-2.2", что не дает MSBuild правильно определить элемент.

Фикс, в принципе прост - вынести аттрибут в элемент configuration и использовать его как неймспейс:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"
xmlns:hib="urn:nhibernate-configuration-2.2">
<hib:hibernate-configuration>
<hib:session-factory>
<hib:property xdt:Transform="Replace" xdt:Locator="Match(name)" name="connection.connection_string">your connection string</hib:property>
</hib:session-factory>
</hib:hibernate-configuration>
</configuration>

Решение было подсмотрено мною здесь: http://www.jamescrowley.co.uk/2011/01/19/web-config-transformations-for-nhibernate/