设置最终在user.config中,即使它们未被修改为从app.config中读取

时间:2010-03-11 12:28:50

标签: .net settings default app-config readonly

考虑一个C#应用程序,它有许多用户设置,有些是主动使用和更新的,有些则始终是只读的。在这种情况下,这样的只读设置属性最终会在每个用户维护的user.config?

中结束

我看到一个有趣的行为,应用程序仅读取的几个用户配置设置最终在user.config中具有相同的未修改的默认值。我的应用程序已经过版本控制,因此在部署下一版本并且某些只读设置被设计更改时,新版本无法获取它们,因为ApplicationSettingsBase.Upgrade()会选择本地过时的值。

基本上,如果应用程序从不修改特定的设置属性,那么它在user.config中的结果和原因是什么?

此外,如何修复损坏并在将来升级时从user.config中删除现有的只读属性?

1 个答案:

答案 0 :(得分:0)

没有看到在user.config文件中保存属性的代码我只能猜测,但我建议您有一些代码可以写入这些值,无论它们是否已从默认值更改,甚至如果他们可以改变默认值。

你有类似的东西:

Properties.Settings.Default.Property1 = this.SomeValue;
Properties.Settings.Default.Property2 = this.ReadOnlyValue;
Properties.Settings.Default.Save();

至于你的补充问题,我认为Save会覆盖现有文件,而不仅仅是更新它。