无法在app.config WPF的appsetting部分中持久化新更改

本文关键字:持久化 新更改 appsetting app config WPF | 更新日期: 2023-09-27 18:10:03

下面是我用来在app.config

中更新或更改appsetting中的值的代码
 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);              
 config.AppSettings.Settings["userName"].Value = username;
 config.AppSettings.Settings["pwd"].Value = pwd;
 config.Save(ConfigurationSaveMode.Modified, true);                
 ConfigurationManager.RefreshSection("appSettings");

我使用上面的代码在运行时更改或更新appsetting部分的设置,并希望更改持续存在,以便当我运行应用程序时,它应该从appsettings中选择新值,但这里没有发生,因此在运行时所做的更改和保存的更改在我重新启动应用程序时不会持续存在,它具有旧的默认设置。我还检查了bin/debug中的app.config,但它也有appsettings中的旧值。我在这里也参考了各种博客和帖子作为参考,但它得到了与上面相同的代码,但它没有坚持设置。参考这篇文章

无法在app.config WPF的appsetting部分中持久化新更改

我之前也有同样的问题。我本想把这个放在评论里,但我没有这个特权。我的答案可能不是你的情况,但我认为值得分享。

请问你的bin文件夹在哪里?在Windows 7中,当你以编程方式修改不在用户可访问空间中的文件时,会在漫游空间中创建该文件的副本,并且该文件将保留在漫游空间中。每次您尝试访问该文件(如app.config)时,W7都会透明地将您的读取/写入重定向到该文件,因此您有可能修改漫游空间中的文件,而使您正在查看的文件保持不变。

在您连续启动应用程序时,您所做的更改是否仍然存在?

免责声明/道歉:我不是一个有经验的用户,所以如果我说了愚蠢的事情让我知道,我会删除这个评论

请参阅下面(来自MSDN),并记住app.config在您的project. exe中。Config为实际文件名。客户端应用程序使用适用于所有用户的全局配置、适用于单个用户的单独配置和适用于漫游用户的配置。userLevel参数通过指示配置文件是否没有用户级别(配置文件与应用程序在同一目录中)或具有每个用户级别(配置文件在由用户级别确定的应用程序设置路径中)来确定正在打开的配置文件的位置。

通过为userLevel传递以下值之一来指定要获取的配置:

To get the Configuration object that applies to all users, set userLevel to None.
To get the local Configuration object that applies to the current user, set userLevel to PerUserRoamingAndLocal.
To get the roaming Configuration object that applies to the current user, set userLevel to PerUserRoaming.
NoteNote
To get the Configuration object for a resource, your code must have read permissions on all the configuration files from which it inherits settings. To update a configuration file, your code must additionally have write permissions for both the configuration file and the directory in which it exists.

我得到了上述问题的解决方案,我的目标是在运行时在应用程序或用户级别持久化所做的更改。最初我尝试使用App.config,我在App.config的appsettings部分保留了应用程序的默认设置,但后来经过研究,我知道appsetting不坚持更改,相反,你可以使用userSettings部分,在YourApplication.Property.Settings下,你可以给你的用户级别设置,它为我工作。要做到这一点,你不需要转到App.config手动执行,而是可以从项目的属性窗口执行。

右键单击你的项目->选择左侧的设置选项卡->现在在右手边你会看到资源部分,给出资源名称,类型,范围和它的值,你就完成了。同样的值也可以从代码中动态访问和更改。下面是相同——

的代码摘录

访问设置值

enter code here
        userName = Properties.Settings.Default.UserName;
        pwd = Properties.Settings.Default.PWD;

保存新设置返回

enter code here
        Properties.Settings.Default.UserName = userName.ToString();
        Properties.Settings.Default.PWD = newPWD..ToString();
        Properties.Settings.Default.Save();

当你下次启动你的应用程序时,你会得到新的更改设置作为你的默认设置。我希望这对你有帮助由于人

VJ