2011-03-21 85 views
4
最佳方式

可能重复:
What is the best way to store user settings for a .NET application?.NET - 存储应用程序设置

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

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

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

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

预先感谢您。

+0

@Scott安德森我'要求.NET 4.0。你给我的链接大概是2.0。 – Hooch 2011-03-21 14:54:37

+0

4.0中没有新东西。或3.0或3.5 – 2011-03-21 14:56:40

+0

在.NET 4.0中没有任何变化与此相关。愚蠢的问题仍然有效,并在.NET 4.0中推荐。 – 2011-03-21 14:56:56

回答

1

MS的新一直试图让人们走出注册表过去2个OS版本。另外,正如@Scott Anderson在评论中所说的,在这方面,.NET 4.0没有什么重大变化。

如果这是一个没有备份数据存储的本地应用程序,那么继续并使用app.config文件。

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

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(); 
} 
+0

MigrateUserSettings如何设置为true?这是这种策略的一部分,我不明白,因为我的测试(使用.NET 4.0和ClickOnce) - 发布我的程序的新版本不会导致该设置恢复为默认值。 – 2013-11-26 21:30:48

+0

对不起,我不能回答这个问题,它适用于我(即使我只是直接运行新版本,而不安装)。也许它是依赖于某个构建/文件版本被碰撞的东西而不是? – 2013-11-27 06:27:52

+0

在哪个命名空间是'Settings'类? – Tschareck 2016-03-18 08:50:52