Settings.setting在调试模式下提供不同的值

时间:2012-05-06 10:41:24

标签: .net settings.settings

第一个陌生感:

我真的很想知道为什么在调试和非调试模式下从Settings.settings文件中获取不同的值。换句话说,我在没有调试的情况下启动我的应用程序(run-> gt; start而不是debuging)和调试模式(rub-> debug)。在这些模式下,它始终为我提供了相同键的不同值

第二种陌生感:

当我在运行时使用我的应用程序更改Settings.settings文件中存储的值时,值不会更改。我在Visual Studio中打开它时看到此文件中的先前值。注意我不会忘记致电Default.Save()来保存更改。

他们是什么原因?它们为什么会发生,我该如何解决它们?

1 个答案:

答案 0 :(得分:4)

原因很简单。调试时,不要启动应用程序本身,而是启动代码执行的Visual Studio托管过程。由于设置是针对每个可执行文件特定的,因此您可以获得VS Debugger托管可执行文件不同的先前保存的设置,就像您直接启动应用程序一样。

您可以在

中选择,以禁用这种奇怪的行为

项目属性 - 调试 -

    uncheck Enable Visual Studio Hosting Process.

如果设置为application scoped,则设置是不可变的(只读)。当您使用用户范围调用保存设置时,它们将存储在您的用户配置文件中。 app.config内容永远不会更改,这对于仅允许管理员安装应用程序是有意义的。稍后,用户可以通过将“diff”写入其本地用户配置文件来更改设置。