Есть ли способ импортировать пользовательский раздел конфигурации?
Я хотел бы знать, есть ли способ сделать несколько пользовательских разделов конфигурации в подпроектах, чтобы добавить друг к другу?
Например, рассмотрим структуру проекта:
Solution\
MainGUI\
App.config
Settings\
MainGUISettings.cs
PrintingLibrary\
App.config
Settings\
PrintingSettings.cs
SocketLibrary\
App.config
Settings\
SocketSettings.cs
DatabaseAccessLibrary\
App.config
Settings\
DatabaseAccessSettings.cs
PrintingUnitTest\
App.config
Settings\
PrintingUnitSettings.cs
Каждый проект имеет файл App.config, который содержит специальные настройки для соответствующей задачи. Например, PrintingLibrary содержит файл App.config, содержащий раздел пользовательской конфигурации PrintingSettings. SocketLibrary содержит файл App.config, который содержит раздел пользовательской конфигурации SocketSettings. DatabaseAccessLibrary содержит файл App.config, который содержит раздел пользовательской конфигурации DatabaseAccessSettings.
MainGUI содержит файл App.config, который содержит основные настройки графического интерфейса пользователя, а также "теги импорта" пользовательских разделов конфигурации каждой библиотеки. При просмотре источника App.config проекта MainGUI разделы PrinterSettings, SocketSettings и DatabaseAccessSettings являются просто "кодом импорта", но при создании MainGUI сгенерированный файл MainGUI.exe.config содержит все три подраздела.
Если я создаю PrintingUnitTest, он также импортирует пользовательский раздел PrinterSettings. Так есть ли встроенный способ сделать это?
Прямо сейчас, как я это делаю, просто помещаю все пользовательские разделы конфигурации в App.config проекта MainGUI и просто копирую необходимые разделы в App.config проекта UnitTest.
1 ответ
Нет никакого способа достичь этого, и вы не должны помещать app.config в какой-либо проект библиотеки (за исключением редких условий, таких как WCF). Вся конфигурация должна идти в app.config исполняемого проекта, поскольку это место, о котором заботится System.Configuration.ConfigurationManager.