查看 Properties.Settings.Default 变量
Posted
技术标签:
【中文标题】查看 Properties.Settings.Default 变量【英文标题】:Viewing Properties.Settings.Default variables 【发布时间】:2013-04-20 20:51:41 【问题描述】:我正在尝试使用 Settings.settings 来定义/保留一些变量。为简洁起见,我设置了一个测试文件来演示我所看到的行为:
首先,我在 Settings.settings 中定义一个设置:
然后我有以下代码来测试更改变量名:
public Form1()
InitializeComponent();
string newString = Properties.Settings.Default.variableName;
Properties.Settings.Default.variableName = "This is a new string";
Properties.Settings.Default.Save();
第一次在调试器中运行上述代码,我从 Properties.Settings 中获取 variableName 的当前值(我最初在 Settings.settings 窗口中设置的值)。正如预期的那样,newString 设置为“这是一个字符串”。不错.....
执行接下来的两行后,调试器显示 variableName 更改为“This is a new string”。好……
然后我再次通过调试器运行应用程序。我点击了字符串 newString 行,在执行之前, newString 是未定义的(当然)。好……
只要我执行...
string newString = Properties.Settings.Default.variableName;
...在代码的后续执行中,variableName 的实际值被定义为“这是一个新字符串”(Good...正如预期的那样)。
然后我返回 Settings.settings 窗口。 variableName 没有改变 - 它仍然是“这是一个字符串”。我什至关闭了 VSE 2012 并重新打开了该项目。 Settings.settings 永远不会改变。
新值存储在哪里?我检查了所有 .config 文件([appname].exe.config、[appname].vshost.exe.config、app.config 和 Settings.settings 文件)和新值,“这是一个新的字符串”在任何地方都找不到。
总之,我从代码中得到了我想要的结果,但除了在调试器中检查 var 的值之外,我似乎无法在设计时查看结果。这似乎不仅对我来说很奇怪,而且是不可能的。
我错过了什么/我没有在哪里寻找?我完全希望 variableName 的值在 Settings.settings 窗口中发生变化,但它永远不会。我在 ***/Google 上到处找,似乎找不到答案。
提前谢谢....
【问题讨论】:
【参考方案1】:您通过 Settings.settings 配置的原始值与可执行程序的程序集一起存储在 .config 文件中。除非您直接通过 Visual Studio 修改设置文件,否则这永远不会改变;它本质上是一个只读文件。
用户的自定义设置存储在用户配置文件中的单独配置文件中。此文件的位置取决于程序集的元数据。例如,在 Windows 7/Vista 上,该位置可能如下所示:
C:\Users\<user name>\AppData\Local\<company name>\<assembly name>\
AssemblyName\<version>\user.config
如果您尚未在程序集的元数据中自定义公司名称,则它可能默认为 Microsoft。另请注意,AppData 是一个隐藏文件夹,根据您的视图设置,它可能在 Windows 资源管理器中不可见。
【讨论】:
感谢您抽出宝贵时间。 Settings.settings 'var store' 是一种很好的方法 (IMO),可以避免在我的应用程序中弄乱 ConfigurationManager,因为我的应用程序在用户范围内只有一个需要持久性的 var。现在我可以在上面的示例中找到正在更改的文件(我会包含路径,但我的评论只剩下 280 个字符......哈哈),我对使用 Settings.settings 表更有信心。我知道那是不合理的偏执狂,但我没有得到强迫症标签,因为我是一个通情达理的人。最好的问候...【参考方案2】:我不确定我是否理解您的问题。该可变内容保持不变。而已。为什么要设置一个持久变量以便以后更改它?
【讨论】:
您是否在问为什么有人要在 settings.settings 中创建和设置一个变量,然后在运行时定期更改该变量?在很多情况下都会发生这种情况,尤其是在用户范围内。例如,不使用 ConfigurationManager 类,特别是如果用户只有很少的配置参数可以更改,我提供的示例非常方便(例如,设置用户范围的文件路径以保存数据)。如果不清楚,我可以更具体。以上是关于查看 Properties.Settings.Default 变量的主要内容,如果未能解决你的问题,请参考以下文章