查看 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 变量的主要内容,如果未能解决你的问题,请参考以下文章

怎么查看linux系统硬件信息

centos怎么查看硬盘健康状态

怎样查看 linux 的网卡信息

linux查看进程id命令(linux查看进程id)

Linux 查看依赖库

Mac里面查看端口号的命令