为什么没有加载持久的用户设置?

我有一个Windows应用程序,它使用一个程序集在默认的应用程序设置中存储一些configuration设置。

这些设置可以在运行时更改并保持如下:

Properties.Settings.Default.SelectedCOMPort = options.SelectedCOMPort; Properties.Settings.Default.Save(); 

设置保存正确,我通过查看保存在用户应用程序目录中的user.config文件来确认

 C:\Documents and Settings\e399536\Local Settings\Application Data\MyCompany\MyTool 

但是,当工具closures,然后再次启动时,所有设置都将使用其默认值加载。

一旦应用程序运行,检查user.config文件确认设置​​仍然保存。

这些设置是这样加载的:

 options.SelectedCOMPort = Properties.Settings.Default.SelectedCOMPort; 

为什么使用默认设置而不是保存的?

我错过了什么?

@ Tenaciouslmpy设置在程序集的构造函数中加载,它本身是在主程序集的表单加载事件中加载的。

@ Austin这是我在Visual Studio中debugging的独立应用程序。

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

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

请确保您在升级设置了NeedsUpgrade,否则升级设置时会消失。

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

这听起来像是你从Visual Studio调试应用程序,当你每次开始一个新的会话,你开始使用默认的数据。

如果你看到这个安装版本,那么我猜你实际上并没有使用字符串值。