В одном проекте, где у нас было 4 среды (разработка, тестирование, подготовка и производство), мы разработали систему, в которой приложение выбрало соответствующую конфигурацию на основе имени компьютера, на котором оно было развернуто.
Это сработало для нас, потому что:
- администраторы могут развертывать приложения без привлечения разработчиков (требование) и без необходимости возиться с файлами конфигурации (которые они ненавидят);
- имен машин придерживаются соглашения. Мы сопоставляли имена с помощью регулярного выражения и развертывали на нескольких машинах в среде; и
- мы использовали встроенную защиту для строк подключения. Это означает, что мы могли бы хранить имена учетных записей в наших конфигурационных файлах во время разработки, не раскрывая никаких паролей.
В данном случае это хорошо сработало, но, вероятно, не сработало бы везде.