Я собрал (надеюсь, полезный) сводку способов, которые я исследовал, чтобы выполнить тему этого сообщения, а также проблемы, с которыми я столкнулся их. Скажите, пожалуйста, нашли ли вы другие способы, которые вам больше нравятся, особенно если они решают проблемы, которых нет в упомянутых мной методах.
Оставьте строки подключения в web.config и используйте преобразование XDT / msdeploy, чтобы заменить их настройками в соответствии с в мою активную конфигурацию сборки (например, файл web.PublicTest.config). Моя проблема в том, что я объединяю и закапываю несколько специфичных для сервера настроек в глобально идентичный файл со многими элементами конфигурации. Дополнительно, Я не могу поделиться определениями строк подключения между несколькими приложениями однорангового уровня.
Укажите значение configSource = "DeveloperLocalConnectionStrings.config" для строк подключения в web.config, и XDT преобразует это значение, чтобы указать на один из нескольких файлов, зависящих от среды. в моей кодовой базе. Моя проблема с этим заключается в том, что я отправляю пароли для всех своих сред во все места назначения (в дополнение к SVN, конечно) и имею неиспользуемые разделы конфигурации, находящиеся на серверах, ожидающих случайного использования.
Конкретные строки подключения в файле machine.config а не web.config. Проблема: кто, черт побери, ожидает найти строки подключения в machine.config, и вероятность неожиданного конфликта имен в результате высока.
Укажите configSource = "LocalConnectionStrings.config", не преобразовывайте значение, и отредактируйте проект xml, чтобы исключить развертывание конфигурации строки подключения. http://msdn.microsoft.com/en-us/library/ee942158.aspx#can_i_exclude_specific_files_or_folders_from_deployment - это лучшее решение, которое я нашел для удовлетворения моих потребностей в проприетарном (нераспространяемом) веб-приложении. , но я параноик, когда-нибудь придет другой член команды и скопирует производственный сайт для тестирования по какой-то причине, и вуаля! Производственная база данных сейчас модифицируется во время UAT. (Обновление: я обнаружил, что не могу использовать публикацию одним щелчком в этом сценарии, только командную строку msdeploy с параметром -skip. Исключение файла, как указано выше, аналогично установке для него действия компиляции "Нет" вместо " Content ", и в результате пакет удаляет его из целевого объекта развертывания. )
Подключите пакет развертывания для запроса строки подключения, если она еще не установлена (я еще не знаю, как это сделать, но понимаю, что это возможно). Результат будет аналогичен приведенному выше пункту 4.
Укажите configSource = ".. \ ConnectionStrings.config". Было бы здорово для моих нужд, так как я мог бы поделиться конфигурацией между выбранными мной приложениями, и в моем каталоге приложений не было бы ничего специфичного для машины. К сожалению, родительские пути не разрешены в этом атрибуте (например, они предназначены для 'appSettings file = ""' - обратите внимание, что вы можете аккуратно использовать file = внутри configSource = reference).
ps некоторые из этих решений обсуждаются здесь: Файл конфигурации ASP.Net -> Строки подключения для нескольких разработчиков и серверов развертывания