Вот идея, которую я имел:
Я хочу, чтобы маленький исполняемый файл имел файл app.config с несколькими разделами, которые находятся в разделе "Настройки приложения" (не "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 (в настоящее время на этот коммит).