11

每次单击一次为应用程序发布新更新时,app.config 文件中的变量都会被销毁

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

我怎样才能防止这种情况?

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

4

2 回答 2

16

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

查看Exploring Secrets of Persistent Application Settings(标题为“维护程序版本之间的设置”的部分):

对于当前版本中与之前版本中的设置相匹配的任何设置,此例程会将它们导入当前版本的 user.config 文件中:

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

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

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

于 2009-03-08T00:35:30.667 回答
0

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

http://robindotnet.wordpress.com/2009/08/19/where-do-i-put-my-data-to-keep-it-safe-from-clickonce-updates/

于 2011-04-01T08:35:51.530 回答