为什么我的应用程序设置没有持久化?
所以我有一些用户范围的设置,但由于某种原因,它们没有保存到.exe.config文件中。 我做了以下事情:
Properties.Settings.Default.Email = "new@value.com"; Properties.Settings.Default.Save();
然而,我查看调试文件夹中的设置文件,它仍然是我在visual studio中设置的默认设置。 我做错了吗?
用户设置特定于用户,因此它们不会保存回系统范围的.exe.config文件。
从LocalSettingsProvider
的文档:
应用程序作用域设置和默认的用户作用域设置存储在名为application.exe.config的文件中,该文件与可执行文件在同一目录中创建。 应用程序配置设置是只读的。 特定用户数据存储在名为
username.config
的文件中,存储在用户的主目录下。
因此,对于UserSettingsTest应用程序,只需在调试器下运行VS(因此是vshost位),我最终得到一条路径:
C:\Users\Jon\AppData\Local\UserSettingsTest \UserSettingsTest.vshost.e_Url_pdqoppugkz1vaawbhwkkcu5ibxpi2fgu \1.0.0.0\user.config
如果您将程序集信息设置为自动生成任何版本号(1.0。*),那么每次调试应用程序时,版本号都会不同,因此每次都会创建一个新文件。
如果是这种情况,您需要在设置文件上执行升级:
Properties.Settings.Default.Upgrade()
您还可以将NeedsUpgrading
的设置默认设置为true
,并在执行升级后将其设置为false,以便每次启动应用程序时不更改版本号的最终用户将不会一直升级
所有用户范围设置都保存在应用程序数据下,位于指示应用程序版本和名称的文件夹中。
您可以通过单击“应用程序设置”对话框中的“同步”来查看这些文件夹。
在Vista中一般:
- C:\用户[currentuser] \应用程序数据\本地[公司名称] [AppName的] \版本
- C:\用户[currentuser] \应用程序数据\漫游[公司名称] [AppName的] \版本
由于设置与当前用户和UAC相关,因此以此方式完成。 在Vista中,您甚至可以看到应用程序范围的设置未存储在配置文件中。
[CompanyName]和[ProductName]来自您的assembly信息设置。