我已将应用程序的配置存储在app.config中,通过Visual Studio我在项目属性对话框的设置选项卡上创建了一些应用程序键,然后我将这个键设置为应用程序级别(而不是用户级别)。
Visual Studio会自动生成以下XML文件(app.config):
Visual Studio会自动生成以下XML文件(app.config):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="AleTest.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<AleTest.Properties.Settings>
<setting name="DatabasePath" serializeAs="String">
<value>Test.s3db</value>
</setting>
<setting name="DatabaseUser" serializeAs="String">
<value />
</setting>
<setting name="DatabasePass" serializeAs="String">
<value />
</setting>
</AleTest.Properties.Settings>
</applicationSettings>
</configuration>
现在我想在运行时保存和重新加载设置,下面是我的代码,允许将 DatabasePath
的值保存在配置文件中:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSectionGroup applicationSectionGroup = config.GetSectionGroup("applicationSettings");
ConfigurationSection applicationConfigSection = applicationSectionGroup.Sections["AleTest.Properties.Settings"];
ClientSettingsSection clientSection = (ClientSettingsSection)applicationConfigSection;
//Database Configuration Setting
SettingElement applicationSetting = clientSection.Settings.Get("DatabasePath");
applicationSetting.Value.ValueXml.InnerXml = this.textBoxPath.Text.Trim();
applicationConfigSection.SectionInformation.ForceSave = true;
config.Save();
问题是使用此代码后,新配置不会被应用程序加载,直到我重新启动应用程序;是否有一种方法在运行时重新加载配置设置?
我还想将applicationSettings
部分的固定名称值(AleTest.Properties.Settings)替换为变量值,是否存在一个变量可以承担这个值(AleTest.Properties.Settings)?