これが私が持っていたアイデアです:
小さな実行可能ファイルに、sectionGroup「applicationSettings」の下にある複数のセクションを含む 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 セクションを定義すると、アプリケーションでそのアセンブリをロードできるようになります。セクションが定義されていない場合、モジュールはロードされません。これは、1 つのモジュールだけでなく、まだ定義されていない数のモジュールにも当てはまります。
したがって、基本的には、実行時に定義されたセクションについて調べる必要があります。どうすればいいですか?
さらに、.NET 2.0 と下位互換性のある移植可能な実行可能ファイル (= Mono でも実行する必要があります) にしたいと考えています。
GitHub のプロジェクトを見てみるのも面白いかもしれません (現在はこのコミットにあります)。