【问题标题】:C# Settings file - how to load?C# 设置文件 - 如何加载?
【发布时间】:2012-12-08 00:00:26
【问题描述】:

我有一个应用程序,我需要存储 3 组字符串集合(用户书签和其他一些东西)。我在我的 C# 项目中添加了一个“设置文件”,创建了 3 个专用字符串集合类型的设置变量。一切似乎都很好,因为我可以向每个集合添加字符串并调用 Settings.Default 的 .Save() 方法。我可以在生成的“user.config”文件中看到我漂亮的字符串集合。

但是,这些值何时加载? Settings 没有 .Load() 方法。尝试访问 Settings.-setting variable-name 会引发 null 异常错误,因此显然这些值不会在启动时自行加载。

我错过了什么?

【问题讨论】:

  • 它们会在您启动程序时自动加载。如果您没有看到您应该看到的内容,那么您将不得不发布一些代码,否则这里没有人能够重现该问题。
  • 另请注意,设置文件必须与可执行程序本身位于同一目录中。
  • user.config 文件存放在 \AppData\Local\ 目录下。无论如何,我把我项目中的设置文件吹走并重新创建。现在它按预期工作。不知道发生了什么。我最初重命名为“Settings1”。在创建后改成不同的名称——这可能与其古怪的行为有关。

标签: c# settings.settings


【解决方案1】:

也许您在使用不同版本的应用程序和设置文件时遇到问题?尝试致电ApplicationSettingsBase.Upgrade 将以前的设置迁移到新版本。

请注意,您应该只调用一次Upgrade,并且仅在您实际更新了设置时才调用。创建一个名为 NeedsUpgrade 的设置属性,默认值为 true,并在应用程序加载时执行以下操作:

if (Settings.Default.NeedsUpgrade)
{
    Settings.Default.Upgrade();
    Settings.Default.NeedsUpgrade = false;
    Settings.Default.Save();
}

这样,Upgrade 只会在创建新版本的设置文件时被调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-06
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    相关资源
    最近更新 更多