『壹』 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方法是無效的)