C# 为什么未加载持久化用户设置?

C# 为什么未加载持久化用户设置?,c#,windows,winforms,persistence,settings,C#,Windows,Winforms,Persistence,Settings,我有一个windows应用程序,它使用一个程序集,在默认应用程序设置中存储一些配置设置 这些设置可以在运行时更改并保持不变,因此: Properties.Settings.Default.SelectedCOMPort = options.SelectedCOMPort; Properties.Settings.Default.Save(); 设置保存正确,我通过查看保存在用户应用程序目录中的user.config文件来确认这一点,例如: C:\Documents and Settings\e

我有一个windows应用程序,它使用一个程序集,在默认应用程序设置中存储一些配置设置

这些设置可以在运行时更改并保持不变,因此:

Properties.Settings.Default.SelectedCOMPort = options.SelectedCOMPort;
Properties.Settings.Default.Save();
设置保存正确,我通过查看保存在用户应用程序目录中的user.config文件来确认这一点,例如:

C:\Documents and Settings\e399536\Local Settings\Application Data\MyCompany\MyTool
但是,当工具关闭后再次启动时,所有设置都会加载其默认值

在应用程序运行后检查user.config文件可确认设置仍然保存

因此,将加载设置:

options.SelectedCOMPort = Properties.Settings.Default.SelectedCOMPort;
为什么使用默认设置而不是保存的设置

我错过了什么吗

@顽强的 这些设置在程序集的构造函数中加载,该构造函数本身在主程序集的form load事件中加载

@奥斯汀
这是一个独立的应用程序,我正在Visual Studio中调试。

这听起来像是在Visual Studio中调试应用程序,每次启动新会话时都使用默认数据启动


如果你用安装的版本看到这个,那么我猜你在实际使用时不是在使用字符串值。

如果你正在重新编译运行中的应用程序,注意它会考虑一个新版本的应用程序,并且将<>强>不/强>自动加载每个用户设置。在这种情况下,您需要调用Settings.Default.Upgrade

只有在需要时才这样做的一种方法是向应用程序的默认每个用户设置添加一个NeedsUpgrade设置(值True)。在应用程序启动时,检查NeedsUpgrade是否为true。如果是,请调用Upgrade,将NeedsUpgrade设置为False,然后保存设置。下次应用程序版本更改时,NeedsUpgrade将重置为True,您将自动调用Upgrade以再次引入任何现有用户设置

确保在调用升级后设置了NeedsUpgrade,否则在升级设置时它将被删除

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

你能把代码贴在你加载字符串设置的地方吗?你什么时候加载设置?表单生命周期中的什么事件?这是独立安装还是从IDE运行?啊,就是这样,干杯。我没有重新编译,但我正在IDE中调试,这似乎做同样的事情。无论如何,Upgrade()技巧已经解决了这个问题。干杯。我对IDE上的调试会话有这个问题(VS.2015),设置被恢复为默认设置。我实现了NeedUpgrade提示,但问题仍然存在。我刚刚在VS 2015社区中测试了它,它仍然适用于我。注意,现在的行为似乎更聪明了一点;除非程序集版本发生更改,否则不会将NeedUpgrade重置为true;仅仅重建应用程序将无法再这样做。