C#visual studio - Properties.Settings.Default.SomeValueOrAnother让我感到困惑

时间:2009-12-07 17:38:29

标签: c# visual-studio-2008 settings

C#visual studio项目:Properties.Settings.Default.SomeValueOrAnother让我感到困惑。

我有一个相对简单的项目。它在会话之间保存了一堆最后输入的值,并在下次调用时恢复它们。工作正常。我更改了一个控件,使最小允许值不再为1,但现在为100.上次使用的值为3.启动时,它现在抱怨3不是有效值。

嗯,呃,当然 - 但是听其余的。

我在VS中编辑了设置,默认为500.我编辑了exename.config文件,包含500而不是3.我检查了每个可能的配置文件(vshost.exe.config,bin / debug中的文件, bin / release,obj / debug,obj / release。它们都包含value = 500.我已经重复构建了。我只将exe和配置文件复制到一台单独的PC上,因此开发环境不是一个因素我仍然收到此错误消息。

为了进一步混淆我,在开发PC上,如果我运行(直接,而不是在调试器中)/ obj / debug或/ obj / release中的exe我不会得到错误。如果我在/ bin下运行那些我会得到错误。配置文件具有相同的内容。如果我复制exe&配置从/ obj(在开发PC上没有出错的那个)到另一台PC,我得到错误。

我认为exename.config是我必须处理的全部内容,但看起来VS正在做我背后的事情 - 至少是我在文档中找不到的东西。我想这是微不足道的。如果有人能解释我错过了什么,我一定会很感激。我真正想做的就是从程序的一次运行到下一次运行时可靠地保存一些用户设置。并让这个应用程序'忘记'过时的价值。

TIA

米奇

2 个答案:

答案 0 :(得分:1)

在解决方案中查找* .settings文件。这就是存储构建项目时使用的值的地方。

答案 1 :(得分:0)

这不是完整的答案,但确实解释了存储神秘价值的地方:

“这可能有助于处理Settings.settings和App.config的人:在编辑Visual Studio中的Settings.settings网格中的任何值时,在”属性“窗格中注意GenerateDefaultValueInCode属性(在我的情况下为VS2008)如果你将GenerateDefaultValueInCode设置为True(True是默认值!),默认值被编译到exe(或dll)中,当你在纯文本编辑器中打开它时,你会发现它嵌入在文件中。我在工作在控制台应用程序上,如果我在exe中有默认值,应用程序总是忽略同一目录中的配置文件位置!相当噩梦,整个互联网上没有关于此的信息。“

...在这里的另一篇文章中。我现在单独测试从设置中读取的值,而不是信任它,并在必要时强制它们进入有效范围。

真的是一个丑陋,隐藏得很好的默认。自CPM时代起,我的可执行文件中没有嵌入数据值。杰什。

再次感谢微软。