2009-08-04 43 views

回答

12

好的,我找到了我真正想要的答案。基本上,你需要调用LocalFileSettingsProvider.Upgrade。但是,由于我将使用ClickOnce进行部署,因此它会自动为您执行此操作。


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

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

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

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

REF:http://blogs.msdn.com/rprabhu/articles/433979.aspx

0

关闭我的头顶我认为你可以在项目构建/运行时设置文件的属性(在Visual Studio中右键单击属性)“不要复制”选项。可能发生的情况是,当您的项目建立时,设置文件被复制到调试bin目录,覆盖上一次运行的设置文件。

+1

我刚刚检查过这个选项,它已经设置为“不要复制”。 – Lenard 2009-08-04 19:00:01

2

我相信Settings.settings文件是基于当前版本号保存的,基本上这是一个“功能”,其中设置不保存在机器上相同程序的不同版本之间。假设在编译时自动递增版本号(AssemblyInfo.cs中为1.0。*),那么每次编译新版本时都会重置您的设置。

若要更正此问题,最好的方法是将您自己的设置文件序列化到Application Data目录。

+1

不知道这将如何被微软视为一个功能。你能想象每次微软更新他们的软件时所有的抱怨吗?他们为什么会认为这对于“我们”的开发者会有什么不同? :) 感谢您的回复! – Lenard 2009-08-04 19:07:24

0

除其他原因,设置文件状态越来越每次调试复位,只是因为下一次你调试,你就可以从头再来测试整个应用程序。不重置设置可能会导致未检测到的错误。