Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, 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 проектах