網上有很多修改App.Config配置文件的代碼,有一種方式是用Configuration.Save保存修改,ConfigurationManager.RefreshSection更新緩存,有網友提問說調試時發現App.Config沒有修改。
App.Config是通過新建項-應用程序配置文件添加的,編譯後通常是不會輸出到bin目錄下,編譯後Release狀態生成的是項目名.exe.config,debug狀態生成的是項目名.vshost.exe.config。查找App.Config配置是否修改成功,不是在項目中找App.config文件是否修改,而是在項目名.exe.config,項目名.vshost.exe.config中找相關項是否修改成功。
在debug狀態下程序修改的是項目名.vshost.exe.config,一旦退出debug狀態項目名.vshost.exe.config文件的修改失效。在release狀態下程序修改的是項目名.exe.config,修改永久有效。
有一個辦法可以避免上面的問題,把Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);用下面2行代碼替換
string assemblyConfigFile = Assembly.GetEntryAssembly().Location;
Configuration config = ConfigurationManager.OpenExeConfiguration(assemblyConfigFile);
debug狀態修改項目名.vshost.exe.config,項目名.exe.config
release狀態修改項目名.vshost.exe.config,項目名.exe.config