10

我正在使用 C# .NET 2.0 Windows 应用程序。

我将 app.config 用于我的应用程序设置。

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

我怎样才能避免它。

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

我正在阅读这样的设置

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

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

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

4 回答 4

23

你可以试试打电话

ConfigurationManager.RefreshSection("appSettings")
从磁盘刷新文件的 AppSettings 部分。刷新它们后,您应该能够读取新值。

我刚刚对此进行了测试,它确实有效。

于 2009-08-10T12:50:51.480 回答
3

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

您设置的“运行时”版本位于单例中,无需从磁盘读取。

于 2009-08-10T13:01:25.400 回答
1

不要使用 ConfigurationManager 来读取设置,而是使用:

        System.Configuration.ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile).AppSettings.Settings["value"];
于 2009-08-10T12:55:18.457 回答
1
ConfigurationManager.RefreshSection("appSettings");

作品!!

但请注意,如果我们处于调试模式,配置文件可以称为xxxxx.vshost.exe.config,其中xxxxx是您的项目名称。

于 2015-10-05T12:31:08.133 回答