Я предпочитаю не регистрировать файлы конфигурации, специфичные для проекта, в элементе управления исходным кодом, а вместо этого хранить содержимое переменных среды и других аспектов конфигурации в общей папке (в элементе управления источником). Затем файлы конфигурации создаются как часть сценариев локальной сборки, автоматизации сборки или развертывания в зависимости от того, что конкретному проекту, решению, среде может потребоваться в данный момент времени. Это можно сделать с помощью простых текстовых файлов, шаблонов xml или чего-то более сложного, например механизма представления искры, в зависимости от ваших потребностей. Вы также можете сделать это по соглашению, если шаблонирование является более сложным, чем вам нужно (и обычно это так). Таким образом, независимо от того, где вы развертываете код, вы можете определить конфигурацию, специфичную для конкретной среды.
Примером соглашения является определение пользовательских разделов конфигурации в основных файлах конфигурации (веб-конфигурация, конфигурация приложения и т. Д.). После этого вы можете сохранить файл connection-strings-development.config, connection-strings -gration.config, connection-strings-testing.config, connection-strings-pre-production.config и соединение-строк-производство. Конфиг в вашем первоисточнике (или общей папке). Процесс сборки затем отбросит соответствующий файл конфигурации строки соединения, переименовав его в просто connection-strings.config.
При генерации по шаблону у вас также будут настраиваемые разделы конфигурации с теми же файлами конфигурации, специфичными для среды, но вместо переименования при развертывании вы можете просто переписать раздел базового файла конфигурации напрямую с соответствующим именем файла конфигурации.
Сохранение ваших файлов конфигурации в разбивке по средам, тем не менее, предоставляет вам большую гибкость, особенно после того, как вы начнете управлять многими сайтами, которые используют одинаковый или подобный стиль конфигурации. Независимо от того, что, однако, ваша конфигурация должна быть продиктована некоторым аспектом вашей автоматизированной среды!