查看Properties.Settings.Default变量

时间:2013-04-26 15:53:54

标签: c# properties.settings

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

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

From the Settings.settings window (variableName

然后我有以下代码来测试更改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中获取当前值(我最初在Settings.settings窗口中设置的值)的variableName。正如所料,newString设置为“This is a string”。好.....

执行接下来的两行后,调试器显示variableName已更改为“This is a new string”。好....

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

Undefined...not executed yet

我一执行......

string newString = Properties.Settings.Default.variableName;

...并且在后续执行代码时,variableName的实际值被定义为“这是一个新字符串”(好......正如预期的那样)。

然后我返回到Settings.settings窗口。 variableName没有改变 - 它仍然是“这是一个字符串”。我甚至关闭了VSE 2012并重新启动了该项目。 Settings.settings永远不会改变。

新值存储在哪里?我检查了所有.config文件([appname] .exe.config,[appname] .vshost.exe.config,app.config和Settings.settings文件)和新值“这是一个新的字符串“无处可寻。

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

我错过了什么/我不在哪里?我完全希望在Settings.settings窗口中更改variableName的值,但它永远不会。我在StackOverflow / Google上到处寻找,似乎无法找到答案。

提前致谢....

2 个答案:

答案 0 :(得分:3)

您通过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资源管理器中不可见。

答案 1 :(得分:0)

我不确定我是否理解你的问题。该变量内容保持持久性。而已。为什么要设置持久变量以便以后更改?