所以我有一些用户范围的设置,但由于某种原因,它们没有保存到.exe.config文件中。我做了以下事情:
Properties.Settings.Default.Email = "new@value.com";
Properties.Settings.Default.Save();
然而,我查看调试文件夹中的设置文件,它仍然是我在visual studio中设置的默认设置。我做错了吗?
答案 0 :(得分:18)
用户设置特定于用户,因此不会将其保存回系统范围的.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 :(得分:18)
如果您将程序集信息设置为自动生成任何版本号(1.0。*),那么每次调试应用程序时,版本号都会不同,因此每次都会创建一个新文件。
如果是这种情况,您需要对设置文件执行升级:
Properties.Settings.Default.Upgrade()
默认情况下,您还可以将NeedsUpgrading
设置为true
,并在执行升级后将其设置为false,以便每次启动应用时不更改版本号的最终用户不会一直在升级
答案 2 :(得分:0)
所有用户范围设置保存在应用程序数据下,位于指示应用程序版本和名称的文件夹中。
您可以点击“应用程序设置”对话框中的“同步”来查看这些文件夹。
在Vista中一般:
由于设置与当前用户和 UAC 相关,因此请执行此操作。在Vista中,您甚至可以看到应用程序范围的设置未存储在配置文件中。
[CompanyName]和[ProductName]来自您的装配信息设置。
答案 3 :(得分:-1)
“用户”定义的设置与“应用程序”定义的设置一起记录在 app.config 中。然而,实际上,以“用户”命名的设置是用词不当且具有误导性。它们应称为“默认用户”设置。
当新用户访问应用程序时,默认情况下会为其分配“用户”设置。
如果用户设置与位于 app.config 文件中的“默认用户”设置不同,则用户设置仅保存到实际用户的 user.config 设置文件中。