Разграничение web.config между разработкой, подготовкой и производственной средой

У кого-нибудь есть хорошие советы по обработке различий в настройках web.config между средами? Я рассмотрел создание папки config в нашей системе контроля версий, но вне веб-иерархии, и с помощью процесса развертывания скопируйте соответствующие файлы конфигурации (web.dev.config, web.staging.config, web.production.config ) в веб-папку после развертывания. Я также видел сообщения о том, как программно изменить настройки конфигурации (конечные точки WCF, строки подключения и т. Д.) При запуске приложения.

Что здесь считается наилучшей практикой и какой опыт у каждого был с тем или иным подходом?

Обновление сентябрь 2010

Стоит отметить, что Visual Studio 2010 добавляет эту возможность черезпреобразования web.config, Когда вы используете менеджер конфигурации сборки (Build | Configuration Manager ...) для создания различных конфигураций для вашего проекта (скажем, Debug, Dev, Staging и Release), VS добавляет файлы web. *. Config в решение. Файл web.config по умолчанию содержит базовые параметры, которые вы будете использовать для отладки. web.release.config, web.staging.config и т. д. содержат XSLT-преобразования, которые будут применяться всякий раз, когда вы публикуете свой проект на основе активной конфигурации сборки.

Ответы на вопрос(9)

Ваш ответ на вопрос