软录 · 2024年10月10日

wpf修改appconfig|c#什么时候读取appconfig

『壹』 c#什么时候读取app.config

app.config是C#中桌面应用程序的一般性配置文件,

在控制台应用、winform、WPF中,配置文件是以app.config命名的,WEB项目中一般以web.config命名。

你先要明白配置文件的作用:

配置文件的作用是在部署后,允许用户去更改一些配置项, 最常见的应用就是数据库连接地址。

比如我有一个项目,开发过程中,我连接的是 localhost服务器,当开发完成后,我要将该项目部署到客户现场,而客户现场的数据库可能是13.4.162.122这样的IP。

如果我有一个app.comfig,那么我只需要打开记事本,修改一下连接字符串就可以了,而不需要重新更改代码,重新编译和部署。

回到你的问题:何时读取app.comfig

当你明白了配置文件的作用后,你就应该了解他并不是程序的一个必须项。在VS进行编译的时候,并不会去处理app.config这个文件,而只是将其拷贝到生成路径下。

所以,必须主动去触发事件读取app.config。

privatevoidAccessAppSettings(){//获取Configuration对象Configurationconfig=System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);//根据Key读取<add>元素的Valuestringname=config.AppSettings.Settings["name"].Value;//写入<add>元素的Valueconfig.AppSettings.Settings["name"].Value="xieyc";//增加<add>元素config.AppSettings.Settings.Add("url","http://www.xieyc.com");//删除<add>元素config.AppSettings.Settings.Remove("name");//一定要记得保存,写不带参数的config.Save()也可以config.Save(ConfigurationSaveMode.Modified);//刷新,否则程序读取的还是之前的值(可能已装入内存)System.Configuration.ConfigurationManager.RefreshSection("appSettings");}

当这些代码执行的时候,才会去读取app.config文件

『贰』 在WPF程序运行时动态修改app.config文件后如何立即生效

你在config.Save() 后加这句试试: ConfigurationManager.RefreshSection("appSettings");

『叁』 wpf 我改了settings里面属性的值 为什么读出来的还是以前的

你的Settings的scope是User吧?User级别的会在每个用户的目录下保存配置文件(如果你保存过的话),Properties.Settings.Default是在没有用户级别配置文件存在的情况下,读取当前目录App.config中的配置文件所以你需要改为Application级别,然后自己写Save方法(Application级别Settings的Save方法是无效的)