我有一个使用.NET 2的“设置”功能的WinForms应用程序,但应用程序中保存的用户范围设置值通常会被存储在“设置”类中的默认值替换。很久以前,我在某个地方找到了指导,将其归因于自动递增的内部版本号,我怀疑这是真的。但是,所述指南建议使用以下代码,但不知怎的,我的设置仍然会重置。
我现在正在解决太多其他问题而不是深入研究这个问题,我认为我已经完成了问题,看看是否有人可以帮助我,以及其他所有人是否有这个问题。
private void Form1_Load(object sender, EventArgs e)
{
UpgradeSettings();
GetSettings();
}
private void UpgradeSettings()
{
if (Properties.Settings.Default.CallUpgrade)
{
Properties.Settings.Default.Upgrade();
Properties.Settings.Default.CallUpgrade = false;
}
}
答案 0 :(得分:1)
您必须按如下方式修改UpgradeSettings。 CallUpgrade的初始值应为true(在“用户设置”中)。
private void Form1_Load(object sender, EventArgs e)
{
UpgradeSettings();
GetSettings();
}
private void UpgradeSettings()
{
if (Properties.Settings.Default.CallUpgrade)
{
Properties.Settings.Default.Upgrade();
Properties.Settings.Default.Reload(); // to activate the settings
Properties.Settings.Default.CallUpgrade = false;
Properties.Settings.Default.Save();// to save the new value of CallUpgrade
}
}
答案 1 :(得分:0)
CallUpgrade默认为true吗?对Upgrade()的调用应该跨构建号迁移设置。
另一种方法是使用固定版本号。您可以根据需要手动修改AssemblyInfo.cs。