『壹』 c#什么时候读取app.config
在控制台应用、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>元素的Value
stringname=config.AppSettings.Settings["name"].Value;
//写入<add>元素的Value
config.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方法是无效的)