.NET - 存储应用程序设置的最佳方式

时间:2011-03-21 14:45:45

标签: c# .net .net-4.0 settings

  

可能重复:
  What is the best way to store user settings for a .NET application?

您好。 在.Net 4.0中存储应用程序设置的最佳方法是什么? Windows注册表? Application.Settings?

如果我希望能够更新程序并保留旧版本的设置(新版本可以有更多新设置和旧版设置被删除)该怎么办?

如果我想存储自定义对象的集合怎么办?

我知道有类似的问题,但它是关于.Net 2.0。也许有一些新方法可以在4.0中保存设置。

提前谢谢。

3 个答案:

答案 0 :(得分:2)

我不认为.NET 4在应用程序设置方面添加了任何新内容。

了解.Net 4中的新功能。 http://msdn.microsoft.com/en-us/library/ms171868.aspx

答案 1 :(得分:1)

MS一直试图让人们从过去的2个操作系统版本的注册表中退出。此外,正如@Scott Anderson在评论中所说,在这方面,.Net 4.0没有任何重大改变。

如果这是没有后备数据存储的本地应用程序,请继续使用app.config文件。

如果你想存储本地数据,那么我建议使用像sql lite或类似的机制,你可以在其中轻松创建表并根据需要进行查询。这也有助于版本控制。

答案 2 :(得分:1)

Application.Settings 绝对是必经之路 - 与注册表设置不同,无论操作系统,用户级别或从终端服务客户端运行应用程序,它都能正常工作。

过去我创建了一个名为 MigrateUserSettings 的属性,并用它来帮助我管理用户设置的迁移。

默认情况下,我在应用程序中将此属性的值设置为 true 。在启动时,如果我发现它已设置为 true ,我会尝试迁移设置,然后将值设置为 false (然后它仍为 false 直到应用程序升级。)

示例:

if (Settings.Default.MigrateUserSettings)
{
    Settings.Default.Upgrade();
    Settings.Default.MigrateUserSettings = false;
    /* Custom handling of migrating specific settings (if required) here
       e.g. if any have been renamed or if the possible options have changed. */
    Settings.Default.Save();
}