网上有很多修改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