Deployment 通过单击一次部署在更新中持久化app.config变量

Deployment 通过单击一次部署在更新中持久化app.config变量,deployment,visual-studio-2005,clickonce,Deployment,Visual Studio 2005,Clickonce,每次使用click once发布应用程序的新更新时,app.config文件中的变量都会被销毁 <userSettings> <app.My.MySettings> <setting name="Email" serializeAs="String"> <value /> </setting> <setting name="UserName" serializeAs="S

每次使用click once发布应用程序的新更新时,app.config文件中的变量都会被销毁

<userSettings>
    <app.My.MySettings>
      <setting name="Email" serializeAs="String">
        <value />
      </setting>
      <setting name="UserName" serializeAs="String">
        <value />
      </setting>
    </app.My.MySettings>
  </userSettings>

我怎样才能防止呢

有没有办法从以前的应用程序版本中提取变量?

是否选中了“应用程序应检查更新”选项

查看(标题为“在程序版本之间维护设置”的部分):

对于当前数据库中的任何设置 与中的设置匹配的版本 在以前的版本中,此例程将 将它们导入到当前版本的 user.config文件:

在程序的入口点,放置以下代码

if (Properties.Settings.Default.UpgradeSettings) 
{
   Properties.Settings.Default.Upgrade();
   Properties.Settings.Default.UpgradeSettings = false;
}

请注意,UpgradeSettings是一个布尔值用户设置(不是应用程序),您需要自己添加,并且您希望默认值为
True

如果您使用用户级设置而不是应用程序级设置,则在检索新版本时会将其向前复制。 不过,最安全的做法是将这些数据从ClickOnce更新中分离出来,呃,“体验”。看看这是否有帮助:


请注意,UpgradeSettings是一个布尔设置,您需要自己添加,并且您希望默认值为True。奇怪的是,我的if语句总是将Properties.Settings.Default.UpgradeSettings读取为false,即使默认值为True。我必须将设置更改为名为“upgrade_settings”,以便将其读取为True,在WPF中没有[APPname].Properties.settings.Default.UpgradeSettings函数,但[Applicationname].Properties.settings.Default.upgrade()存在,并且它是无效函数@Mitch Wheat,它是否在2020年过期,vs2019年,.net 4.7?