Denis Gladkikh
Russian   |  English

Выбранный тег: XML-Document-Transform

Config Transformation Tool: Теперь поддерживаются параметры

Пару недель назад я писал про небольшую утилиту Config Transformation Tool, которую я создал на базе задачи трансформирования web.config файла. В тот момент у меня сразу же возникла идея, что было бы неплохо еще иметь возможность указывать места в файле-трансформере, вместо которых можно было бы подставлять значения при помощи этой утилиты. И вот, сегодня я готов объявить, что мне удалось решить эту задачу. Сначала хотелось бы поблагодарить AlexBar, за то, что он порекомендовал посмотреть глубже при помощи .Net Reflector в недры библиотеки Microsoft.WebApplication.Build.Tasks.Dll, и отыскать там класс Microsoft.Web.Publishing.Tasks.XmlTransformation, который умеет выполнять XML-Document-Transform для строк. Мне это очень сильно упростило реализацию. Чтобы утилита смогла поддерживать параметры мне предстояло решить две задачи: (а) уметь пробегаться по файлу и подставлять значения вместо параметров, (б) уметь парсить командную строку на предмет передачи параметров со значениями.



Config Transformation Tool: Используем XDT Transformation

В ASP.NET 4 появилась фича Web.Config Transfomration, на первый взляд очень полезная и интересная вещь для развертывания веб-приложений. Она позволяет указывать для web.config файла вашего веб-приложения файл трансформации, который по определённому синтаксису (XDT) будет заменять, удалять или добавлять элементы файла web.config при развертывании. Синтаксис очень простой, потому сразу же захотелось использовать его, и не только для web.config, а и для log4net.config, unity.config и всех остальных config-файлов, которые лежат рядом. Более того, я сразу подумал о том, чтобы использовать эту фичу и для WinService приложения (консольное приложение в основе). И начал мечтать, как было бы хорошо, когда я бы настроил билд в CCNet и при развертывании у меня все настройки хорошо бы трансформировались по нужной конфигурации. Но оказалось не так все просто, данная фича по умолчанию работает только для web.config, но я решил не отчаиваться и найти решение, результатом которого стала небольшая программка Config Transformation Tool.