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

rye*_*guy 12 .net c# application-settings

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

Properties.Settings.Default.Email = "new@value.com";
Properties.Settings.Default.Save();
Run Code Online (Sandbox Code Playgroud)

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

csj*_*nst 19

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

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

Properties.Settings.Default.Upgrade()
Run Code Online (Sandbox Code Playgroud)

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


Jon*_*eet 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
Run Code Online (Sandbox Code Playgroud)

  • XP将是C:\ Documents and Settings\Ryan\Local Settings\Application Data (3认同)
  • 我今天已经阅读了超过 20 篇关于此问题的答案和文章,这是唯一能够正确获取文件名称和位置的一篇。当然是乔恩·斯基特。 (2认同)