【问题标题】:Can't get App.config settings to persist无法使 App.config 设置保持不变
【发布时间】:2017-09-14 21:13:12
【问题描述】:

问题:用户在初始启动时设置的值不会保留在 App.config xml 中

所需功能:用户设置的值保留在 App.config 中,除非用户更改

我正在努力做到这一点,以便用户第一次运行应用程序时,他们设置了一个文件夹,他们使用该程序制作的文件将被保存在其中。我想将该字符串存储在 App.config 中,以便只需设置一次。截至目前,它将设置它并将其保存在内存中,但如果程序关闭,该值将丢失。我认为调用 .save() 方法可以解决它,但它没有。 打开表单时:

if (ConfigurationManager.AppSettings["SaveFilePath"] == null)
{
    FolderBrowserDialog fbd1 = new FolderBrowserDialog();
    fbd1.RootFolder = Environment.SpecialFolder.MyComputer;
    fbd1.Description = "Select a folder to save to:";
    fbd1.ShowNewFolderButton = true;

    if (fbd1.ShowDialog() == DialogResult.OK)
    {
        Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        config.AppSettings.Settings.Add("SaveFilePath", fbd1.SelectedPath);
        config.Save();

        ConfigurationManager.RefreshSection("appSettings");
    }
}

【问题讨论】:

  • App.Config 并非旨在成为持久存储解决方案。您应该考虑以另一种方式保留这些选项,也许是 settings.json?

标签: c# xml winforms app-config


【解决方案1】:

应该使用应用程序设置文件(在项目的属性页面中查看)来存储和检索用户设置。

Using Settings in C#该页面显示 VS 2005,但在使用 VS 2017 的项目中仍然可行


【讨论】:

  • 这听起来很棒。我按照文章创建了一个新设置来保存路径。我替换了 if 条件来检查Properties.Settings.Default.defaultFilePath == "C:\\",但它不起作用。我在运行时收到信息消息,上面写着“找不到元素‘userSettings’的架构信息”。我错过了什么需要配置?
  • @BrettMinster 正在发生其他不明显的事情。我在许多项目中都使用了用户项目设置。我建议你创建一个控制台应用程序在那里尝试。如果它有效,则主要是有问题。如果没有,那么您可以通过示例将问题发回此处给 SO。请记住,每次构建时,用户设置都会被覆盖为install 状态并且不会保留。
  • 我遇到的问题在代码的其他地方。它现在可以正确存储该值,并且可以根据需要由用户更改。我仍然无法解决错误控制台中显示的消息,但它可以正常工作并且它们不是实际的错误或警告。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多