Недавно пришлось занимать простой вещью: есть проект, есть шаблон конфигурации. И для каждого развертывания системы надо заполнить свой шаблон. Ок, у нас есть решение. Берём TransformXml-Task для msbuild, и трансформируем конфиг:
<TransformXml Source="someapp.config" Transform="transform.xml" Destination="someapp.config" />Выглядит просто, не так ли? Увы только выглядит. Сама по себе задача преобразования работает замечательно, только вот TransformXml блокирует... Source! Чтобы понять, как это приятно попробуйте наложить несколько трансформаций на один файл. В итоге у меня вышло нечто подобное:
<Copy SourceFiles="someapp.config" DestinationFiles="someapp.config.1"/> <TransformXml Source="someapp.config.1" Transform="transform1.xml" Destination="someapp.config" />Не очень элегантно. И временные файлы нельзя удалить в процессе работы msbuild - они заблокированы. Весьма, весьма досадный баг, и молниеносная реакция на него. Может кто-нибудь знает способ лучше?
<Copy SourceFiles="someapp.config" DestinationFiles="someapp.config.2"/> <TransformXml Source="someapp.config.2" Transform="transform2.xml" Destination="someapp.config" />
Этот комментарий был удален автором.
ОтветитьУдалитьСоздай отдельно файл шаблона someApp.template.config и файл конфигурации someApp.config. Файл конфигурации наполняй из шаблона:
ОтветитьУдалитьМне еще нужно было обновить конфигурацию рядом с скомпилированным файлом поэтому у меня еще так: