18

所以我有一些用户范围的设置,但由于某种原因,它们没有保存到 .exe.config 文件中。我执行以下操作:

Properties.Settings.Default.Email = "new@value.com";
Properties.Settings.Default.Save();

然而,我查看了调试文件夹中的设置文件,它仍然是我在 Visual Studio 中设置的默认设置。我做错了吗?

4

4 回答 4

24

用户设置是特定于用户的,因此它们不会被保存回系统范围的 .exe.config 文件。

来自以下文档LocalSettingsProvider

应用程序范围设置和默认用户范围设置存储在名为 application.exe.config 的文件中,该文件与可执行文件在同一目录中创建。应用程序配置设置是只读的。特定的用户数据存储在一个名为 的文件中,该文件username.config存储在用户的主目录下。

因此,对于仅在调试器下从 VS 运行的 UserSettingsTest 应用程序(因此是 vshost 位),我最终得到了一条路径:

C:\Users\Jon\AppData\Local\UserSettingsTest
  \UserSettingsTest.vshost.e_Url_pdqoppugkz1vaawbhwkkcu5ibxpi2fgu
  \1.0.0.0\user.config
于 2009-06-28T07:12:59.170 回答
21

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

如果是这种情况,您将需要对设置文件执行升级:

Properties.Settings.Default.Upgrade()

您也可以设置为NeedsUpgrading默认true设置,并在执行升级后将其设置为 false,以便每次启动应用程序时不更改版本号的最终用户不会一直在升级

于 2009-06-28T07:25:35.243 回答
2

所有用户范围设置都保存在应用程序数据下的文件夹中,该文件夹指示应用程序的版本和名称。

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

通常在 Vista 中:

  • c:\users[currentuser]\AppData\Local[CompanyName][AppName]\version
  • c:\users[currentuser]\AppData\Roaming[CompanyName][AppName]\version

这样做是因为设置与当前用户UAC相关。在 Vista 中,您甚至可以看到应用程序范围的设置并未存储​​在配置文件中。

[CompanyName] 和 [ProductName] 来自您的装配信息设置。

于 2009-06-28T07:17:23.280 回答
-1

“用户”定义的设置与“应用程序”定义的设置一起记录在 app.config 中。然而,在现实中,“用户”命名设置是用词不当且颇具误导性。它们应该被称为“默认用户”设置。

当新用户访问应用程序时,默认情况下会为他们分配“用户”设置。

如果用户设置与位于 app.config 文件中的“默认用户”设置不同,则仅将用户设置保存到实际用户的 user.config 设置文件中。

于 2021-01-11T08:27:11.013 回答