我想继续使用应用程序设置,但我即将放弃并实施自己的解决方案。
我正在使用Visual Studio 2013,.Net 4.5,无论我是在IDE中运行我的应用程序还是将其作为独立的EXE运行,都会发生以下情况。我不打算安装我的应用程序;没有也不会为它创建一个设置。
在我的Form_Load()事件中,我有这段代码:
Settings boo = MyApp.Properties.Settings.Default;
boo.Reload();
boo.mystring = "baa";
boo.Save();
一旦我逐步完成这四行,我将检查boo.mystring,它的值应为“baa”;
此时,我可以在%appdata%...下查看我的app.config文件并掷出一枚硬币,它可能已经或未经过更新
如果我决定让我的程序运行并在我的代码的另一部分中在几分钟之后重新运行4行以上,那么这个谜团仍在继续。在做一个boo.Reload()后,设置:“boo.mystring”,可能会也可能不会保留其“baa”值。
我检查过的事情:
IDE以管理员身份运行。
管理员和我自己的帐户对我的%appdata%文件夹和我的项目文件夹都有完全控制权,包括所有子文件夹和文件。
无论我是否在同一个班级或其他班级使用上述四行应用程序设置,都会发生这种不一致。
无论我是否尝试使用上述四行应用程序设置背靠背或通过按钮调用它,也会发生这种情况。
我用过“boo.Upgrade()”,但没有解决问题。
我已经在这里和其他地方检查了很多关于这个问题的文章,这些修复要么围绕确保使用Reload(),Upgrade(),Save(),要么暗示你需要在运行你的EXE之后您已为应用程序创建并运行设置。
多年来,我在几台不同的计算机,硬盘,Windows版本等问题上一直存在这个问题。
现在我正处于这样的地步,我要么像宣传的那样让它工作,要么会经历编写我自己的设置实现的痛苦。
非常感谢任何修复,指示,建议或任何想法。
答案 0 :(得分:0)
也许这会有所帮助:
http://www.geek-republic.com/2010/11/c-portable-settings-provider/
我在我的项目中使用了该代码(原样),我希望从编译到编译的应用程序设置相同,并且还可以将它们绑定到控件。 (它是我用于开发的工具,它被重新编译了很多)。某些设置不受控件绑定,可以在不同时间访问,就像您的用例一样。
以下是我当时发表的一些评论,说明为什么我不喜欢使用它:
首先请注意,app.config设置是app-level或 用户级别。应用级设置是只读的,因此我们必须使用 需要保存到的设置的用户级设置 运行时的app.config。 MS的正常行为是存储 用户级AppData本地文件夹中的用户级设置。 PortableSettingsProvider将用户级appSettings保存到 app.config文件位于exe所在的位置而不是位于 用户的AppData本地文件夹。通常AppData很好,但作者 想要轻松便携"配置文件,即一个地方的所有东西, 没有分割成用户的文件夹。这个应用程序想要这种行为 开发...每次重新编译都会将用户配置文件放入新文件夹中。 这个应用程序想要从编译到编译使用相同的文件。 此外,坚持使用应用程序设置而不是其他方法 意味着我们可以使用控件将控件的属性绑定到应用程序设置 设计师(见http://msdn.microsoft.com/en-us/library/0yyxh69h)。
无论如何,它只是工作"对我来说,这个讨论中的某些内容可以帮助你找到答案。