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