为什么在运行时不考虑App.config中AppSettings的更改? (控制台应用)
我有一个控制台应用程序,它有自己的App.config。
我需要不时更改部分值。
我的问题是,当我在bin / debug文件夹中执行exe时,它会正确获取相关的appsettings。 但是当我编辑和更改某些键/值对的值并重新运行exe时,它仍然会读取原始值。
(通过RE-RUN我的意思是通过调用MyTool.exe在命令promt上运行应用程序)
我试着打电话
ConfigurationManager.RefreshSection("appSettings");
在我的主要方法的开头。 但没有帮助。
你能给些建议么? 谢谢
但是当我编辑和更改某些键/值对的值并重新运行exe时,它仍然会读取原始值。
取决于你如何重新运行这个exe。 如果您在Visual Studio中执行此操作,通过按F5 ,VS只需将项目中的app.config文件复制到输出并将其重命名为AppName.exe.config
。 因此,如果要将更改考虑在内,则必须修改AppName.exe.config
(而不是App.config
),然后从Windows资源管理器运行可执行文件。
这就是说,App.config只被读取和解析一次。 应用程序启动时。 然后缓存这些值,以避免每次应用程序请求某些值时都进行昂贵的XML解析。
App.config旨在存储不应更改的配置值。 如果需要动态更改配置值,则应使用其他存储机制:文件,数据库,…
但是ConfigurationManager.RefreshSection("appSettings");
方法应该工作。 修改AppName.exe.config
文件后,调用此方法,然后使用ConfigurationManager.AppSettings["someKey"];
重新获取所需的值ConfigurationManager.AppSettings["someKey"];
哪个应该返回新值。
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // change ConnectionString in App.Config for Entity FrameWork Object.... //..... config.Save();
你保存配置文件?