升级应用程序时迁移用户级自定义设置

Kei*_*thS 5 .net config migrate

我有一个使用自定义配置部分进行用户级设置的应用程序。它是通过这种方式完成的,而不是使用设置文件,以便可以将设置集中在程序的单个 app.config 中,而不是像设置文件的默认设置那样每个项目都有一个。

问题是这些自定义设置是每个用户可配置的,并且当用户升级软件时会丢失(为新构建版本创建一个新文件夹,并且不再使用旧文件夹)。因此,我需要一种方法来在更新时或升级后每个用户首​​次运行应用程序时迁移这些设置。我已经看到了有关Settings.Upgrade()的信息,但这只适用于配置的设置文件部分。我浏览了 ConfigurationSection 的文档(我的自定义设置类/部分从中派生),似乎没有任何帮助。使用 ConfigurationManager 从安装程序中提取用户设置来迁移它们似乎是一个死胡同,因为 OpenExeConfiguration 的重载不支持同时指定可执行文件和用户级别。

有什么提示吗?存储的信息并不重要(主要是记住窗口几何形状和布局设置),但每次应用程序升级时丢失信息可能会很烦人。我唯一能想到的就是完全放弃这些设置的配置机制,并实现我自己的模型,将这些设置存储在用户的 AppData 中的版本无关文件中(我在其中存储了一些其他特定于用户的文件)。我希望这是最后一个选择,因为放弃 app.config 包装器会损失很多。

小智 1

您可能想要创建对外部配置节文件的引用,该引用在更新期间保持不变。使用 configSource 属性来引用该文件。

这样,用户可以在更新 app.config 时保留其设置。

这是一篇相关文章:How to enable configSource attribute for Custom Configuration Section in .NET?