Мы - малочисленная команда, работающая над веб-проектом asp.net, а также сервисом, оба проекта, зависящие от общей библиотеки классов.
Мы хотели бы иметь настройки библиотеки классов, отличающиеся на разработчика (и позже для производства). В настройках включенная уязвимая информация, такая как пароли, а также имена хостов.
Как мы должны присвоить эти настройки?
Если я не ошибаюсь, web.config/application настройки не достаточно хороши, поскольку они не работают на общую библиотеку классов.
PS: Кроме того, некоторые переменные должны быть статически связаны, и остальные (такие как connectionstrings) должны быть динамичными.
Файлы web.config app.config считываются с любого запущенного веб-сайта или приложения. Т.е. любые файлы настроек приложения в библиотеке классов не используются. Например, любые ссылки на ConfigurationManager.ConnectionStrings ConfigurationManager.AppSettings в библиотеке классов будут использовать любой файл web.config/app.config, определенный в приложении, использующее библиотеку классов, а не любой файл .config, который может быть установлен в самой библиотеке классов.
Самый простой способ управлять различными параметрами для каждого разработчика и для рабочей области — сохранить конфигурацию в другом файле, например
<appSettings configSource="Web.appSettings.dev.config"/>
У каждого разработчика есть свой собственный файл Web.appSettings.dev.config, который не входит в систему управления версиями. Когда в рабочей области вы просто меняете на:
<appSettings configSource="Web.appSettings.live.config"/>
Вам просто нужно убедиться, что у вас есть какой-то шаблон Web.appSettings.template.config в svn, который является главным, но не имеет никаких настроек, и вручную управляется, чтобы все новые ключи или строки подключения, добавленные в шаблон, также добавлялись в каждый файл devs и рабочий файл.