2016-06-14 50 views
0

我有一个Winforms应用程序,其中有很多设置(.settings文件)。在C:\Users\[User's username]\AppData\Local\[My program name]\[Build or something]\1.0.0.0\user.config中保存了这些内容(据我所知),但每当我创建一个新版本并且用户运行该版本时,它会创建一个新的[Build or something]文件夹,并从一组“全新”设置开始。滚动以前版本的设置的最佳做法是什么?从旧版本获取设置

(一些设置我想成为“全新的”每一个新版本的运行时间和一些设置我想从一个版本复制)

+0

可以将设置内容移植到单个.Config文件中。 – MethodMan

回答

3

我使用这个职位描述的方法(它说Clickonce,但它也适用于其他类型的应用程序):https://blogs.msdn.microsoft.com/rprabhu/2005/06/29/client-settings-faq/

问:好的,但我怎么知道何时调用升级? A:好问题。在Clickonce中,当您安装新版本的应用程序时,ApplicationSettingsBase将检测到它并在加载点设置时自动升级设置。在非Clickonce案例中,没有自动升级 - 您必须自己调用升级。以下是确定何时致电升级的一个想法:

有一个名为CallUpgrade的布尔设置,并将其设置为默认值true。当你的应用程序启动时,你可以这样做:

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

这将确保升级()被调用仅在第一次的新版本部署后的应用程序运行。

+0

是的,我的程序中也有一个“checkFirstRun()”方法。我可以把它放在那里。现在,我有几个问题:如果我调用'Properties.Settings.Default.Upgrade();'它会升级所有的设置?如果我在新版本中拥有比旧版本更多的设置,这些设置是否会保持不变? – derekantrican

+0

post说:“只需调用ApplicationSettingsBase.Upgrade(),它将从之前版本中检索与当前版本的类匹配的设置,并将它们存储在当前版本的user.config文件中。” 所以是的,您的新设置将保持不变 – vmg