【问题标题】:C# settings being loaded from .exe.config but are saved to user.configC# 设置从 .exe.config 加载但保存到 user.config
【发布时间】:2016-04-20 03:44:15
【问题描述】:

由于某种原因,当我的应用程序加载时,它会从应用程序路径中的 programname.exe.config 读取设置,但是当我调用 Properties.Settings.Default.Save() 时,设置会保存在 Appdata/local/program/version /user.config
如何让我的应用程序从 user.config 加载?

如果我删除 programname.exe.config,它会在下次运行程序时重新生成。

【问题讨论】:

  • 默认行为就是你所描述的。用户设置在<application>.config 文件(在ùserSettings` 部分)中获得默认值,然后写入user.config。当您再次阅读它们时,它们会从user.config(如果存在)读取,或者从<application>.config(如果不存在)读取。我不知道为什么没有为您加载user.config,但其余的只是正常行为
  • 您是否故意从user.config 中删除了configSections/SectionGroup xml 以获取屏幕截图?
  • 可以分享一下代码吗?
  • @regularjoe - 更新了我的答案。
  • 感谢您的回答,但请阅读我的更新......

标签: c# settings.settings


【解决方案1】:

这是合法行为。 User 设置特定于用户,因此保存在用户配置文件中。想象一下,用户为他定制了一些设置,并且它们被其他用户覆盖。这肯定不会是一个好的用户体验。

用户设置的加载将是相同的。

例如,您有一个名为qualityUserSetting,您可以像这样读取此设置 -

var qualitySettingValue = Properties.Settings.Default.quality;

...您可以修改此值并保存新设置,例如 -

Properties.Settings.Default["quality"] = "New Quality Settings";
Properties.Settings.Default.Save();

现在下次当你像这样读取这个值时 -

var qualitySettingValue = Properties.Settings.Default.quality;

qualitySettingValue 将具有更新后的值 -

另一方面,Application 级别设置对所有用户都是通用的,将保存在Application.exce.config 文件中。

【讨论】:

    【解决方案2】:

    你需要这样做,

    Properties.Settings.Default.Upgrade()
    

    保存前。

    【讨论】:

    • 提醒一下 - 如果你在 VS 中调试,每次构建时配置文件都会被覆盖。在应用程序运行之间不会保留更新的设置。
    猜你喜欢
    • 2012-01-21
    • 2012-06-29
    • 2010-10-21
    • 2015-11-15
    • 2012-08-18
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多