这里是我提出的想法:如何通过名称获取所有部分在sectionGroup的applicationSettings .NET 2.0中
我想要一个小型可执行文件有属于sectionGroup下位于多个部分的app.config文件“ 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上的项目(当前位于this commit)可能很有趣。
帮助很大,非常感谢你。我会给两个直接引用我的例子的upvotes,但我不能... :( – HaMster 2013-02-19 19:43:57
没问题,很高兴帮助,你可能想看看我的最新编辑,我包含了一些关于'ConfigurationManager.GetSection'的信息。如果您不需要对配置文件执行任何其他操作,通常是访问配置文件的首选方式。 – 2013-02-19 20:26:18
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); - 这将打开当前配置没有必要知道EXE路径 – timothy 2014-09-12 08:36:52