Блог Олександра Биндю Continuous Integration Трансформація g
Почнемо розгляд роботи з config-файлами із найпростішої теми. Створимо програму ASP.NET MVC 4. За замовчуванням у створеному проекті вже є 2 конфігурації (Debug, Release) та 3 config-файли (Web.config, Web.Debug.config, Web.Release.config):

Згенеровані файлиWeb.Debug.configтаWeb.Release.configмістять трохи корисного коду. Для демонстрації їх можливостей додамозамінурядки підключення до БД у різних конфігураціях складання. Отримаємо такі файли:
Файли конфігураційWeb.Debug.configтаWeb.Release.configмістять схеми трансформації. У нашому випадку ми трансформуватимемо файлWeb.config. За допомогоюxdt:Transform="Replace"поміняємо значення атрибутуconnectionString.
З прикладу видно, що для конфігураціїDebugвикористовуватиметься локальна БД. КонфігураціяReleaseпіде на бойовий сервер, тому в рядку підключення ми вказали шлях до бази даних MSSQL, з якою працюють кінцеві користувачі.
Target AfterBuild
Тепер зробимо автоматичну трансформаціюWeb.configпід час складання проекту. Для цього додамо викликTransformXmlу targetAfterBuildнашого проекту:
Якщо ми змінимо конфігурацію складання на Release і зробимо Build проекту, то у файліWeb.configотримаємо таке:
Як бачимо, наш файлWeb.configбуло змінено. У рядок підключення підставилися дані ізWeb.Release.config. Якщо виставити конфігурацію Debug і зробити Build, то рядок підключення підставиться значення зWeb.Debug.config.
Використання трансформації при Deploy
При складанні проекту можна переглянути Output:
Виходить, що для створення релізу нам достатньо під час складання проектувказати конфігурацію Release та до Web.config буде застосовано відповідну трансформацію.
При такому підході нам уже не треба пам'ятати про зміну рядка підключення до БД, зміна відбудеться. Це виключить ручну роботу з файлами конфігурації, що зменшить кількість помилок при заливках.
Зверніть увагу, що схему трансформації можна застосовувати до будь-якої секції config-файлів. Це можуть бутиappSettings,customErrorsта інші. Заміна рядка підключення наведена як найнаочніший і найпопулярніший приклад.