Вот идея, которая у меня возникла:
Я хочу, чтобы у небольшого исполняемого файла был файл app.config с несколькими разделами, расположенными в разделе sectionGroup «applicationSettings» (не «appSettings», мне не нужно писать в файл). У каждого раздела будет имя, соответствующее модулю, который должен быть загружен, если он установлен.
Вот пример:
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Executable" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="FirstModule" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<Executable>
<setting name="MyFirstSetting" serializeAs="String">
<value>My awesome feature setting</value>
</setting>
</Executable>
<FirstModule path="path to the modules assembly">
<setting name="ImportantSettingToTheModule" serializeAs="String">
<value>Some important string</value>
</setting>
</FirstModule>
</applicationSettings>
</configuration>
Теперь, если я определю раздел FirstModule, я хочу, чтобы мое приложение загрузило свою сборку. Если раздел не определен, модуль не должен загружаться. Это должно быть верно не только для одного модуля, но и для еще не определенного их количества.
Поэтому мне в основном нужно узнать об определенных разделах во время выполнения. Как бы я это сделал?
Вдобавок я хочу, чтобы это стало переносимым исполняемым файлом (= он также должен работать на Mono), обратно совместимым с .NET 2.0.
Было бы интересно взглянуть на проект на GitHub (в настоящее время это этот коммит).