C# 安装程序升级后更新app.config文件

C# 安装程序升级后更新app.config文件,c#,app-config,upgrade,C#,App Config,Upgrade,我目前正在使用C#开发Microsft Word应用程序级外接程序。我的应用程序包含一个app.config文件。在这个文件中,我保存了用户设置(userSettings部分)和自定义配置部分定义的一些数据。存储在custom ConfigurationSection中的数据也是特定于用户的 我按如下方式访问用户设置: Properties.Settings.Default.MyUserSetting 我使用的自定义配置部分类似于: ConfigurationManager.OpenExeCo

我目前正在使用C#开发Microsft Word应用程序级外接程序。我的应用程序包含一个app.config文件。在这个文件中,我保存了用户设置(userSettings部分)和自定义配置部分定义的一些数据。存储在custom ConfigurationSection中的数据也是特定于用户的

我按如下方式访问用户设置:

Properties.Settings.Default.MyUserSetting
我使用的自定义配置部分类似于:

ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
     .GetSection("MyCustomConfigurationSection")
我的问题是:

  • 我是否以“正确”的方式使用app.config?(我知道可能不止一种正确的方法,“我的方法”是其中之一吗?)

  • properties.Settings.Default使用哪个ConfigurationUserLevel?有没有办法设置/更改它

  • 最重要的是:是否有一种方法可以在升级我的应用程序时自动保留用户特定的设置,但同时添加新创建的设置


  • 我使用WiX构建的安装程序部署外接程序。目前我使用CustomActions,它为每个添加/删除/更改的设置手动插入代码。但是我想知道是否有一种内在的方法可以做到这一点。

    我现在做了一整天的研究,我想我可以自己回答我的问题:

    Q:properties.Settings.Default使用哪个配置用户级别?有没有办法设置/更改它?
    答:似乎properties.Settings.Default使用ConfigurationUserLevel.PerUserRoamingAndLocal,这听起来很合理,因为它们只包含用户设置。。。我不知道是否有可能改变它,但对我来说没有必要

    Q:是否有办法在升级我的应用程序时自动保留用户特定的设置,但同时添加新创建的设置?
    答:我发现“设置”中有一个Upgrade()-方法,用于在旧版本的产品和新版本之间复制用户设置。有关更多信息,请参阅。我必须承认,我没有机会测试它,因为我没有权限构建安装程序,但我会依赖它。在我测试完我的解决方案后,我将回到这篇文章。
    此外,我不再使用自定义配置部分。相反,我从System.Configuration.ApplicationSettingsBase派生,这意味着我能够像处理Properties.Settings一样处理自定义数据,包括Upgrade()-方法。有关如何使用它的更多信息,请参阅


    希望这对其他人有所帮助。

    我没有使用外接程序的经验,但.NET应用程序支持多个配置文件。您可能会发现这个示例很有用,似乎您必须以字符串形式提供完整的xPath才能获得值。我宁愿继续通过属性访问它们。