C# 查看Properties.Settings.Default变量

C# 查看Properties.Settings.Default变量,c#,properties.settings,C#,Properties.settings,我正在尝试使用Settings.Settings定义/保留一些变量。为了简单起见,我设置了一个测试文件来演示我看到的行为: 首先,我在Settings.Settings中定义了一个设置: 然后,我有以下代码来测试更改variableName: public Form1() { InitializeComponent(); string newString = Properties.Settings.Default.variableName;

我正在尝试使用Settings.Settings定义/保留一些变量。为了简单起见,我设置了一个测试文件来演示我看到的行为:

首先,我在Settings.Settings中定义了一个设置:

然后,我有以下代码来测试更改variableName:

    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被设置为“thisastring”。好的

执行下两行后,调试器显示variableName更改为“这是一个新字符串”。好的

然后我再次通过调试器运行应用程序。我点击字符串newString行,在执行之前,newString是未定义的(当然)。好的

我一执行

string newString = Properties.Settings.Default.variableName;
。。。在代码的后续执行中,variableName的实际值被定义为“这是一个新字符串”(很好,正如预期的那样)

然后返回到Settings.Settings窗口。variableName没有更改-仍然是“这是一个字符串”。我甚至关闭了VSE 2012并重新打开了该项目。设置。设置从不更改

新值存储在哪里?我已检查了所有的.config文件([appname].exe.config[appname].vshost.exe.config、app.config和Settings.Settings文件),但找不到新值“This is a new string”

总之,我从代码中得到了我想要的结果,但除了在调试器中检查var的值之外,我似乎无法在设计时查看结果。这似乎不仅是我所特有的,而且是不可能的

我错过了什么/我没有看哪里?我完全希望variableName的值在Settings.Settings窗口中更改,但它从来没有更改过。我在StackOverflow/Google上到处找,似乎找不到答案


提前谢谢……

我不知道我是否理解你的问题。变量内容保持持久性。就这样。为什么要设置一个持久变量以在以后更改它

通过Settings.Settings配置的原始值存储在可执行程序集旁边的.config文件中。除非您直接通过Visual Studio修改设置文件,否则这将永远不会更改;它本质上是一个只读文件

用户的自定义设置存储在用户配置文件中的单独配置文件中。此文件的位置取决于程序集的元数据。例如,在Windows 7/Vista上,位置可能如下所示:

C:\Users\<user name>\AppData\Local\<company name>\<assembly name>\
   AssemblyName\<version>\user.config
C:\Users\\AppData\Local\\\
AssemblyName\\user.config

如果尚未在程序集的元数据中自定义公司名称,则该名称可能默认为Microsoft。另请注意,AppData是一个隐藏文件夹,在Windows资源管理器中可能不可见,具体取决于您的视图设置。

您是否询问为什么有人希望在settings.settings中创建和设置变量,然后在运行时定期更改该变量?在很多情况下都会发生这种情况,特别是在用户范围内。例如,与使用ConfigurationManager类不同,特别是当用户的配置参数很少发生更改时,我提供的示例非常方便(例如,设置用户范围的文件路径以保存数据)。如果不清楚的话,我可以说得更具体一些。谢谢你花时间。Settings.Settings“var store”是一种很好的方法(IMO),可以避免与我的应用程序的ConfigurationManager发生冲突,因为我的应用程序在用户范围内只有一个需要持久性的var。现在,我可以在上面的示例中找到正在更改的文件(我会包括路径,但我只剩下280个字符可供评论…哈哈),我觉得使用Settings.Settings表更有信心。我知道那是不合理的妄想症,但我没有得到强迫症的标签,因为我是一个通情达理的人。顺致敬意,