Я ищу лучшую практику для управления конфигурацией в проекте с несколькими библиотеками классов. Я ищу ремонтопригодность и простоту реализации.
Давайте рассмотрим простой пример: консольный проект с 2 библиотеками классов. Каждая библиотека классов нуждается в своих собственных настройках конфигурации, и есть некоторые настройки, которые являются общими для нескольких.
Библиотека классов 1
Библиотека классов 2
A Первый подход будет создавать все необходимые настройки в основном проекте:
- GlobalSetting
- CL1Setting
- CL2Setting
Но это создает несколько проблем:
- Он может быстро загромождаться при большом количестве настроек.
- Нелегко поддерживать: как узнать, какие настройки необходимы для каждой библиотеки?
- Может создавать конфликты имен. Что если CL1Setting и CL2Setting будут иметь одинаковые имена?
Идеальным решением для меня (хотя я боюсь, что это невозможно) было бы использование пользовательских настроек библиотеки в отдельных файлах или, по крайней мере, в разных разделах. Примерно так:
<configuration>
<appSettings>
<add key="globalSetting" value="cl1Global"/>
</appSettings>
<appSettings file="CL1.config" >
<add key="cl1setting" value="cl1setting1"/>
</appSettings>
<appSettings file="CL2.config">
<add key="cl2setting" value="cl2setting2"/>
</appSettings>
</configuration>
Есть предложения?
EDIT
Как предполагает Кен Хендерсон, разделы конфигурации - это другой подход. Однако, несмотря на свои преимущества, они требуют кодирования, поэтому я не считаю его идеальным. (Это, вероятно, будет лучшим вариантом)
РЕДАКТИРОВАТЬ 2
Предложение joseph.ferris посмотреть на конструктор разделов конфигурации на CodePlex (csd.codeplex.com) было хорошим. Я обнаружил дополнительные проблемы, о которых сообщалось здесь (на случай, если кто-то заинтересовался) http://csd.codeplex.com/discussions/278354