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

标签 .net config migrate

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

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

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

最佳答案

您可能希望创建对在更新期间保持原样的外部配置节文件的引用。使用 configSource 属性来引用文件。

这样用户可以在 app.config 更新时保留他们的设置。

这是一个相关的帖子:How to enable configSource attribute for Custom Configuration Section in .NET?

关于.net - 升级应用程序时迁移用户级自定义设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5409364/

相关文章:

terraform - Mac OS 中的 Terraform CLI 配置文件 (.terraformrc) 在哪里?

.net - 检查 SSRS 报告自定义代码中的 Active Directory 组成员身份表

c# - .NET 中的动态 WSDL 位置

php - Symfony2 中的自定义配置

cassandra - 如何将数据从大小为 N 的 Cassandra 集群迁移到大小为 N+/-M 的不同集群

python - django 中的迁移命令在部署到 heroku 时出错

php - WordPress 迁移将我重定向到 WordPress 网站的新安装

c# - 使用 AWS X-Ray .NET MVC 记录异常

.net - 为什么 system.float 不存在于 .net 中?

editor - 无法将 ckeditor 工具栏位置设置在底部