Наличие двух проектов: один представляет собой библиотеку классов (сборка .dll), а другой — графический интерфейс (.exe), использующий библиотеку классов.
В библиотеку классов я добавил два файла .settings (которые автоматически добавляют файл app.config в проект), используя все настройки «приложения». Когда я компилирую проект, я фактически получаю файл MyLib.dll.config в выходном каталоге.
Теперь для проекта с графическим интерфейсом я ссылаюсь на библиотеку классов и вручную копирую MyLib.dll.config в папку bin\debug (и release).
Я пытаюсь получить настройки MyLib.dll.config из приложения с графическим интерфейсом, но пока это не работает. Я пытался сделать классы .settings общедоступными, но безуспешно.
Я читал о методе OpenMappedExeConfiguration(), но не могу найти настройки в возвращаемой конфигурации. Кроме того, как заставить классы .settings использовать конфигурацию, возвращаемую OpenMappedExeConfiguration?
Примечание. Я не хочу вручную добавлять записи из MyLib.dll.config в app.config приложения с графическим интерфейсом, поскольку эти записи вообще не принадлежат ему.
Дополнительные примечания:
Файл .config, который у меня есть:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="TestAssembly.ItemClass" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="TestAssembly.Entity" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<TestAssembly.ItemClass>
<setting name="Job" serializeAs="String">
<value>TrussPlant.Job</value>
</setting>
<setting name="Family" serializeAs="String">
<value>TrussPlant.Family</value>
</setting>
</TestAssembly.ItemClass>
<TestAssembly.Entity>
<setting name="TrussClassifier" serializeAs="String">
<value>TrussPlant.Classifier</value>
</setting>
<setting name="TrussComposer" serializeAs="String">
<value>TrussPlant.Composer</value>
</setting>
</TestAssembly.Entity>
</applicationSettings>
</configuration>
Обратите внимание, что существует группа SectionGroup, содержащая два раздела.