这是我的想法:
我想要一个小的可执行文件有一个 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 部分,我希望我的应用程序加载它的程序集。如果未定义该部分,则不应加载该模块。这不仅适用于一个模块,而且还适用于尚未定义的模块数量。
所以我基本上需要在运行时找出定义的部分。我该怎么做?
此外,我希望它成为向后兼容 .NET 2.0 的可移植可执行文件(= 它也必须在 Mono 上运行)。
看看 GitHub 上的项目可能会很有趣(目前在这个提交)。