首页 > 后端开发 > C++ > 为什么 `ConfigurationManager.AppSettings.Set` 不保留 App.Config 更改?

为什么 `ConfigurationManager.AppSettings.Set` 不保留 App.Config 更改?

Patricia Arquette
发布: 2024-12-31 10:32:17
原创
937 人浏览过

Why Doesn't `ConfigurationManager.AppSettings.Set` Persist App.Config Changes?

App.Config 值修改困境

在提供的代码片段中,尝试修改 App.Config 文件中的值。然而,这种修改并没有像预期的那样持续存在。为了找出这个问题的根源,让我们深入研究所提供的代码并探讨潜在的问题。

代码段:

lang = "Russian";
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
     System.Configuration.ConfigurationManager.AppSettings.Set("lang", lang);
}
登录后复制

确实修改了应用程序配置文件。但是,正如响应中强调的那样,此修改仅发生在内存中,不会持久保存到物理配置文件中。

解决此问题的关键在于认识到 ConfigurationManager.AppSettings.Set("lang", lang) 仅进行临时的内存中更改。要将这些更改保留到 App.Config 文件,需要执行额外的步骤。

响应引入了专门为控制台应用程序定制的修订后的代码片段:

class Program
{
    static void Main(string[] args)
    {
        UpdateSetting("lang", "Russian");
    }

    private static void UpdateSetting(string key, string value)
    {
        Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        configuration.AppSettings.Settings[key].Value = value;
        configuration.Save();

        ConfigurationManager.RefreshSection("appSettings");
    }
}
登录后复制

在此代码中:

  1. ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 用于以可写方式打开 App.Config 文件state.
  2. 然后使用configuration.AppSettings.Settings[key].Value = value修改所需的键值对。
  3. 最重要的是,调用configuration.Save()方法将这些更改保存到 App.Config 文件中。
  4. 最后,使用 ConfigurationManager.RefreshSection("appSettings") 刷新加载的 App.Config部分,确保任何后续检索操作读取更新的值。

通过利用此更新的代码,对 App.Config 文件所做的值修改现在已成功保留,解决了问题并允许所需的语言设置更改。

以上是为什么 `ConfigurationManager.AppSettings.Set` 不保留 App.Config 更改?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板