每个新的 ClickOnce 部署版本都会丢失 VB.NET “My.Settings”
Posted
技术标签:
【中文标题】每个新的 ClickOnce 部署版本都会丢失 VB.NET “My.Settings”【英文标题】:Losing VB.NET "My.Settings" with each new ClickOnce deployment release 【发布时间】:2010-12-14 16:58:54 【问题描述】:我正在使用 VB.NET 中内置的 My.Settings 功能来保存应用程序设置。
这很方便,但我注意到每次发布新版本时,设置都会丢失。
为什么以及如何预防?
【问题讨论】:
试图澄清。您正在使用项目属性页面的“设置”选项卡上的内置设置。您的设置的“范围”值是什么 - “应用程序”或“用户”? 嗯。我假设(并且仍然怀疑)这些设置在用户范围内。我怎么知道? 我找到了。是的,它在用户范围内。 【参考方案1】:你需要手动更新你的应用设置,我用这个简单的方法:
创建一个名为 MustUpgrade 的布尔设置,用户范围,默认为 True。然后编写一个方法来检查 My.Settings 是否需要更新,如果需要,则调用它的 Update() 方法。将您的设置标记为已更新,然后保存。在您的应用程序加载中的某个地方调用它。 Upgrade() 方法会将您的设置更新为新格式,并迁移您现有的值。
Sub UpgradeMySetings()
If My.Settings.MustUpgrade Then
My.Settings.Upgrade()
My.Settings.MustUpgrade = False
My.Settings.Save()
End If
End Sub
【讨论】:
有趣...如何为属性设置设置默认值? “应用程序属性”对话框的“设置”选项卡似乎不支持它。我想知道这是否会对你有害[无条件评分... 在您的项目属性中,“设置”选项卡显示了一个网格,您可以在其中定义应用程序设置。最后一列(值)是默认值。在此单元格中输入“True”。 2005 年和 2008 年相同,更多信息请访问 msdn.microsoft.com/en-us/library/25zf0ze8.aspx 无条件升级将起作用,测试只是一种很好的做法,对于那些需要在将旧设置迁移到新设置之前进行预处理的情况。所以逻辑就在那里以防未来的版本需要它;) 我收回了。它没有用。我有与此处发布的相同问题:bytes.com/topic/visual-basic-net/answers/… 我正在使用 click-Once 来部署 Winfform 应用程序。我怀疑每次升级都会进入一个新文件夹。我正在使用临时签名文件对应用程序进行签名。这并没有像海报那样解决我的问题。 请记住,每个实例(bin\debug、bin\release、clickonce install)都有自己的设置副本。此外,当您重新创建签名时,该应用程序被视为“不同的应用程序”,并且设置不会迁移。签名后,请保留该密钥(注意它们每年都会过期。)以上是关于每个新的 ClickOnce 部署版本都会丢失 VB.NET “My.Settings”的主要内容,如果未能解决你的问题,请参考以下文章