【问题标题】:How to keep Settings details in Visual Studio application?如何在 Visual Studio 应用程序中保留设置详细信息?
【发布时间】:2016-05-10 11:09:12
【问题描述】:

我使用本地设置来存储应用程序用户的用户名和密码。

目的:当用户点击记住我检查时,它存储在本地。当用户重新启动应用程序时,它会从本地设置中获取并显示。

MyApplication.Properties.Settings.Default.UserName = "john"; //从登录表单获取 MyApplication.Properties.Settings.Default.Password = "jonh@123"; //从登录表单获取

如果应用程序连续运行,这可以正常工作。但是如果我安装应用程序的升级版本,它的行为就会不正确。此 MyApplication.Properties.Settings.Default.UserName 返回旧用户名。

如果我再次安装另一个升级版本,它会返回我以前使用过的任何其他用户名。

有人可以建议我在这里缺少什么吗?

【问题讨论】:

  • 你打电话给MyApplication.Properties.Settings.Default.Save()吗?
  • 是的。每当部署应用程序的新版本时,就会出现问题。在这种情况下,用户配置文件中会使用一个新文件夹来存储设置。必须显式调用Settings.Default.Upgrade 将以前的值复制到新文件中。
  • @ThorstenDittmar 我可以按照您的建议调用升级设置,但我不知道如何才能知道我的应用程序已升级?你能推荐一下吗?
  • @NanjiMange 阅读巴里的回答。这是正确的解决方案。
  • @ThorstenDittmar 我已经用建议的方式发布了我的代码。请查看:stackoverflow.com/questions/37139383/…

标签: c# visual-studio-2013


【解决方案1】:

试试这个。创建一个名为UserSettingsUpgradeRequired 的设置,将其值设置为true,并在启动时检查它。如果是真的那么这是新版本的第一次运行所以请致电Settings.Default.Upgrade();

private static void CheckUserSettingsUpgradeRequired()
{
    if (Settings.Default.UserSettingsUpgradeRequired)
    {
        Settings.Default.Upgrade();
        Settings.Default.UserSettingsUpgradeRequired = false;
        Settings.Default.Save();
    }
}

【讨论】:

  • @ThorstenDittmar 更新。很好的收获。
  • 添加到这个答案:在设置设计器中将此设置设置为 true 会导致它是 true 每当(但仅当)安装了新版本的应用程序时,只有这样恢复默认设置。因此,如果发现设置为true,您就知道您需要进行升级。您只需升级一次,然后将值设置为false 并存储设置。这样,您将在需要时执行一次升级。
  • @ThorstenDittmar Settings.Default.Upgrade(); 删除我现有的数据。前任。在 1.0.0 版中,UserName = "john"Password = "jonh@123"。如果我安装新版本 1.1.0,它将两个详细信息都设置为空白。所以这是升级UserName = ""Password = ""后的值。它应该保留UserNamePassword 的旧细节。我不希望用户在升级后再次输入他们的详细信息,因为它设置了“记住我”。如果我遗漏了什么,请提出建议。
  • @ThorstenDittmar 我只想让存储在版本 1.0.0 中的任何数据在安装版本 1.1.0 后应该保持原样。它不应该改变。
  • 您能确认Settings.Default.Upgrade(); 确实在运行吗?您是否创建了UserSettingsUpgradeRequired 设置>
猜你喜欢
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多