因此,长话短说,我正在开发一个应用程序,它将利用一些可能在运行时通过应用程序本身更改的配置信息。为此,我想使用Settings
class.
问题在于,信息在应用程序的不同运行之间没有保留:
Run 1)
Console.WriteLine(Settings.Default["User"]); //prints "Default user"
Settings.Default["User"] = "abc";
Console.WriteLine(Settings.Default["User"]); //prints "abc"
Run 2)
Console.WriteLine(Settings.Default["User"]); //prints "Default user"
Settings.Default["User"] = "abc";
Console.WriteLine(Settings.Default["User"]); //prints "abc"
(两者打印完全相同的输出)
两次运行都显示相同的第一个打印“默认用户”,尽管在第二次运行时我想得到“abc”,表明该信息在不同的应用程序执行之间没有保留。
我承认这一定与 Visual Studio 处理 .config 文件的方式有关,但即便如此,我想知道如何纠正这种(讨厌的)行为?
默认情况下,App.config不会直接复制,而是将其内容放置在<assembly-name>.config
输出文件夹中的文件。复印设置不适用于此操作。
一般来说,应用程序更改自己的 app.config 并不是一个好的做法。如果您正在开发可由同一台 PC 上的多个用户使用的应用程序,那么使用设置反而。这样每个用户都可以有自己的设置。
对于服务和系统范围的设置,请考虑使用其他存储,例如单独的配置文件、注册表或数据库。
关于保存设置的编辑:
使用设置类时,应调用 Save() 将其写入文件,否则当应用程序关闭时,设置更改将被丢弃。如果您经常在开发过程中终止应用程序,并且它没有到达结束代码(您通常会在其中调用 Save()),那么您有多种选择:
- 使用调试器监视窗口调用 Save()。为此,请放置如下表达式
Settings.Default.Save()
在监视窗口中并在每次要保存时刷新它。
- 您可以尝试使用计时器每秒调用一次 Save。
- 设置更改后,您可以在代码中插入 Save() 调用。
- 您可以编写自定义设置提供程序或包装器,以便在每次更改后立即保存设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)