13

我有一个控制台应用程序,它有自己的 App.config。

我需要不时更改部分中的一些值。

我的问题是,当我在 bin/debug 文件夹中执行 exe 时,它​​会正确获取相关的 appsettings。但是当我编辑和更改某些键/值对的值并重新运行 exe 时,它​​仍然会读取原始值。

(通过重新运行,我的意思是通过调用 MyTool.exe 在命令提示符上运行应用程序)

我试着打电话

ConfigurationManager.RefreshSection("appSettings");

在我的 Main 方法的开头。但没有帮助。

你能给些建议么?谢谢

4

2 回答 2

38

但是当我编辑和更改某些键/值对的值并重新运行 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"];应返回新值。

于 2012-07-13T08:41:00.683 回答
0
  Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// change ConnectionString in App.Config for Entity FrameWork Object....
 //..... 
config.Save();

你保存配置文件吗?

于 2015-12-26T19:47:36.540 回答