2009-08-10 47 views
9

我正在使用C#.NET 2.0 Windows应用程序。更改AppSettings需要重新启动我的应用程序我该如何避免?

我正在使用app.config作为我的应用程序设置。

但在AppSettings中的更改不反映运行时,它需要重新启动应用程序。

我该如何避免它。

这是我用来读写应用程序设置的代码片段。

我读这样的

string temp = ConfigurationManager.AppSettings.Get(key); 

我更新这样的值,其中节点是当前配置/的appSettings节点

node.Attributes["value"].Value = value; 
xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 

回答

23

你可以尝试调用

ConfigurationManager.RefreshSection("appSettings")
刷新设置磁盘文件的AppSettings部分。一旦它们被刷新,你应该能够读取新的值。

我刚刚测试过,它确实有效。

+1

+1非常酷 - 我不知道你能做到这一点! – 2009-08-10 12:51:44

+4

RefreshSection不会工作 – 2009-08-10 12:56:19

+1

它的工作! – shahjapan 2009-08-10 13:11:36

1

不使用ConfigurationManager中读取设置,改用:

 System.Configuration.ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile).AppSettings.Settings["value"]; 
+0

是的,这也可能,但它可能不是最有效的方法。 – shahjapan 2009-08-10 13:13:31

+2

这里您也可以使用ConfigurationManager。 – SwissCoder 2010-09-08 11:51:51

3

或者,你可以创建一个单独的“选项”来保存到您的应用程序设置和执行你读你/写。加载后,更改.config不需要重新加载,只需在单例中设置一个属性并调用.Save()方法即可。

您的设置的'运行时'版本是单身,不需要从磁盘读取。

+0

+1,在感谢我的意见,这是迄今为止最好的解决方案。 – Cleiton 2009-08-10 13:09:29

1
ConfigurationManager.RefreshSection("appSettings"); 

作品!

但要小心,如果我们在调试模式下,配置文件可以被称为xxxxx.vshost.exe.config,其中XXXXX是您的项目名称。

相关问题