Kil*_*are 8 c# windows settings persistence winforms
我有一个Windows应用程序,它使用一个程序集,在默认的应用程序设置中存储一些配置设置.
设置可以在运行时更改并保持不变:
Properties.Settings.Default.SelectedCOMPort = options.SelectedCOMPort;
Properties.Settings.Default.Save();
Run Code Online (Sandbox Code Playgroud)
设置已正确保存,我通过查看保存在用户应用程序目录中的user.config文件来确认
C:\Documents and Settings\e399536\Local Settings\Application Data\MyCompany\MyTool
Run Code Online (Sandbox Code Playgroud)
但是,当工具关闭然后再次启动时,所有设置都会加载其默认值.
应用程序运行后检查user.config文件确认设置仍然保存.
因此加载设置:
options.SelectedCOMPort = Properties.Settings.Default.SelectedCOMPort;
Run Code Online (Sandbox Code Playgroud)
为什么使用默认设置而不是保存设置?
我错过了什么吗?
@ Tenaciouslmpy在程序集的构造函数期间加载设置,该构造函数本身在主程序集的表单load事件中加载.
@ Austin这是我在Visual Studio中调试的独立应用程序.
tec*_*ile 11
如果您在运行之间重新编译应用程序,请注意它将考虑新版本的应用程序,并且不会自动加载每个用户的设置.在这种情况下,您需要调用Settings.Default.Upgrade.
仅在需要时执行此操作的一种方法是将NeedsUpgrade设置(值True)添加到应用程序的默认每用户设置.在应用启动时,检查NeedsUpgrade是否为true.如果是,请调用Upgrade,将NeedsUpgrade设置为False,然后保存设置.下次应用程序版本更改时,NeedsUpgrade将重置为True,您将自动调用Upgrade以再次引入任何现有用户设置.
确保在调用Upgrade 后设置NeedsUpgrade ,或者在升级设置时它将被清除.
if (Settings.Default.NeedsUpgrade)
{
Settings.Default.Upgrade();
Settings.Default.NeedsUpgrade = false;
Settings.Default.Save();
}
Run Code Online (Sandbox Code Playgroud)