在运行时保存并重新加载app.config(applicationSettings)

我已经在app.config中存储了我的应用程序的配置,通过Visual Studio我已经在项目属性对话框的设置选项卡上创建了一些应用程序密钥,然后我在应用程序级别设置了此密钥(不是在用户级别)。

Visual Studio自动生成以下xml文件(app.config):

    
Test.s3db

现在我想在运行时保存并重新加载设置,这是我的代码,允许在配置文件中保存值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)?

您需要调用ConfigurationManager.RefreshSection才能从磁盘重新读取值。

我做了一些测试,这是结果。

对于自动生成的类Settings调用ConfigurationManager.RefreshSection("applicationSettings"); 不会对使用ApplicationScopedSettingAttribute标记的成员应用修改后的值,它会通过ConfigurationManager成员将更改应用于将来的调用(并且不确定UserScopedSettingAttribute )。

而是调用Settings.Default.Reload();

您想要的是通过创建自定义ConfigSection来实现,它允许您进行更多控制并允许您更改名称。 配置管理器有一个刷新部分,允许您重新加载数据。

Aleroot的更新值代码运行良好。 尽管Properties.Settings只是写(没有设置)。

要刷新,这对我有用:ConfigurationManager.RefreshSection(“applicationSettings”);

但我正在使用它来访问参数:string test = Properties.Settings.Default.MyString; MessageBox.Show(“Paramètres/ Settings MyString =”+ test);