为什么我的应用程序设置没有持久化?

所以我有一些用户范围的设置,但由于某种原因,它们没有保存到.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信息设置。