Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Setty не мешает использовать web.config transforms.
Так есть возможность добавлять различную логику в конфиге. См. пример об отправке почты из введения.
К примеру, на локальных машинах разработчиков отправленная почта должна сохранятся на диске, в то время как на тестовом сервере почта должна отправлятся с использованием сервиса отправки почты.
И если у вас на проекте 10 различных конфигураций (Prod, Stage, Stage v2.0., Dev, etc..)…
Setty не мешает использовать web.config transforms.
И как они сочитается.
Так есть возможность добавлять различную логику в конфиге. См. пример об отправке почты из введения.
Это вот этот:
К примеру, на локальных машинах разработчиков отправленная почта должна сохранятся на диске, в то время как на тестовом сервере почта должна отправлятся с использованием сервиса отправки почты.
Так это типичная ситуация «конфиг на среду», никакой логики.
И если у вас на проекте 10 различных конфигураций (Prod, Stage, Stage v2.0., Dev, etc..)…
То что? У нас это прекрасно разруливается через config transforms.
И ладно бы это, еще ведь есть трансформы в веб-деплое.
XML-Document-Transform
(судя по схеме для трансформации).Чтобы в дочернем конфиге изменить параметр, не обрабатываемый в шаблоне — придется модифицировать шаблон. В итоге он может превратиться в монстра с кучей if — else для всех возможных вариантов конфигурации.
Вообщем таких примеров, когда разработчику нужна полная свобода при настройке приложения, можно привести много. При этом всегда помнить о том, что эти изменения нужно не закомитить они не хотят, а если и хотят, то обязательно забудут.
Да, вполне себе рулится, добавлением нового конфига для трансформации и копированием половины одинаковых настроек, вместо того что бы держать все настройки в одном месте, и переопределять только одну, нужную для опрепедлённой конфигурации.
Формально это тоже не логика, а разные среды.
Вообще-то, трансформы так и работают — вы легко можете переопределить только нужное.
<configuration xmlns:xdt="...">
<connectionStrings>
<add name="MyConnectionString" connectionString="new_connection_string"
xdt:Transform="Replace"
xdt:Locator="Condition(@name='MyConnectionString')" />
</connectionStrings>
</configuration>
Ну скажем, для того что бы поменять строку подключения к БД для продакшена вам нужна трансформация вроде этой
Setty и трансформации отлично сочитаются.
Копирования здесь нет, это как раз типичное переопределение нужного.
Об этом я не спорю. Я просто намекаю, что надо понимать границы и осмысленность применимости всех инструментов.
db.properties
, то в системе контроля версий должен храниться файл db.properties.tmpl
. При первой загрузке изменений из системы контроля версий (update, pull, etc) каждый разработчик переименовывает .tmpl
файл избавляясь от расширения (так как приложение использует db.properties
, без наличия этого файла ничего работать не будет) и заодно подставляя нужные ему значения конфигурации. При последующих обновлениях шаблона конфигурационного файла каждый разработчик будет видеть что добавились новые параметры и что нужно добавить соответсвующие декларации в свой конкретный конфигурационный файл при этом подставив нужные значения. db.properties
файл, и все эти изменения останутся на сервере (что не всегда возможно, если использовать appharbor к примеру). Setty позволяет хранить настройки для всех конфигураций в системе контроля версий.
Управления конфигурационными файлами в .net проектах