2009-06-28 72 views
8

所以我有一些设置是用户作用域,但由于某些原因,它们没有被保存到.exe.config文件。我做到以下几点:为什么我的应用程序设置不能持久?

Properties.Settings.Default.Email = "[email protected]"; 
Properties.Settings.Default.Save(); 

但我期待在debug文件夹中设置文件,它仍然是我在Visual Studio中设置的默认。我做错了吗?

回答

13

用户设置是特定于用户的,因此它们不会被保存回系统范围的.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

我有WinXP,但在C:\ Documents and Settings \ Ryan \中没有看到任何此类文件或文件夹。应用数据。这是正确的地方吗? – ryeguy 2009-06-28 19:49:20

+0

恩,不知道在XP上。将在早上尝试。 – 2009-06-28 20:45:39

0

所有的用户范围设置指示您的应用程序版本和名称的文件夹。

您可以在“应用程序设置”对话框中单击“同步”来查看这些文件夹。

在Vista中一般:

  • C:\用户[currentuser] \应用程序数据\本地[公司名称] [AppName的] \版本
  • C:\用户[currentuser] \应用程序数据\漫游[公司名称] [AppName的] \版本

这样做的话,由于与当前用户UAC的相关设置。在Vista中,您甚至可以看到即使应用程序范围内的设置也不存储在配置文件中。

[公司名称]和[产品名称]来自您的装配信息设置。

15

如果您的程序集信息设置为自动生成任何版本号(1.0。*),那么每次调试应用程序时,版本号都会有所不同,因此每次都会创建一个新文件。

如果这是你需要的设置文件执行升级的情况:执行升级打完

Properties.Settings.Default.Upgrade() 

您还可以通过默认设置的NeedsUpgrading设置以true并将其设置为false每次启动应用程序时不更改版本号的最终用户将不会一直升级

相关问题