我正在使用Properties.Settings
类来保存应用程序设置。我想知道,一旦我在客户端系统中部署,是否会在应用程序重启和系统重启时保存设置。
考虑一下情景:
部署应用程序后,用户将通过UI保存手机号码
电话:1xxxx - 45678
现在,我将电话号码保存为
Properties.Settings.Default.ClientPhone = this.PhoneText.Text;
Properties.Settings.Default.Save();
我的理解是,电话号码会在app.restarts中重新启动并保存在应用程序中吗?
答案 0 :(得分:3)
这是应用程序和用户设置的不同之处。应用程序设置是只读的。用户设置永久存储在每个用户的基础上。 您的代码正是更改和保存用户设置所需的代码。
请注意:由于它们被称为“用户设置”,它们将为机器上的每个用户单独存储!您不能使用默认的.NET设置机制创建对所有用户都相同的可更改设置。
不要重新发明轮子!使用.NET设置机制 - 您在示例中正确执行: - )
答案 1 :(得分:2)
这样可以正常工作,但要记住的一件事是,如果安装新版本的程序,它将“丢失”旧设置(因为这些设置特定于程序的特定版本)。 (“版本”是指AssemblyVersion)
幸运的是,你可以通过在Main()的开头或附近调用以下函数来解决这个问题。为此,您需要添加一个名为NeedSettingsUpgrade的新布尔设置属性,并将其默认为'true':
/// <summary>Upgrades the application settings, if required.</summary>
private static void upgradeProgramSettingsIfNecessary()
{
// Application settings are stored in a subfolder named after the full #.#.#.# version
// number of the program. This means that when a new version of the program is installed,
// the old settings will not be available.
//
// Fortunately, there's a method called Upgrade() that you can call to upgrade the settings
// from the old to the new folder.
//
// We control when to do this by having a boolean setting called 'NeedSettingsUpgrade' which
// is defaulted to true. Therefore, the first time a new version of this program is run, it
// will have its default value of true.
//
// This will cause the code below to call "Upgrade()" which copies the old settings to the new.
// It then sets "NeedSettingsUpgrade" to false so the upgrade won't be done the next time.
if (Settings.Default.NeedSettingsUpgrade)
{
Settings.Default.Upgrade();
Settings.Default.NeedSettingsUpgrade = false;
}
}
答案 2 :(得分:1)
快速谷歌应该已经为你完成了。
是的,他们会根据msdn:.NET allows you to create and access values (settings) that are persisted between application execution sessions.
http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx