对.Net应用程序设置框架感到困惑

时间:2011-12-12 10:21:41

标签: c# wpf application-settings

作为.Net世界的新手,我对在WPF应用程序中存储应用程序设置的位置和方式感到非常困惑。

我一直看到对Properties.Settings.Default的引用,但是这在我的WPF应用程序中无法解决,我无法找到这些实际的类,以便找到要引入的程序集。这是一种仅限WinForms的技术吗?

我还发现ConfigurationSettings似乎已被弃用,ConfigurationManagerAppSettingsApplicationSettingsSettings!我相信很多这些工作在一起,但我很难找出属于哪些,什么是旧的,或与WPF无关。

有人可以拼出新手的基本选项吗?

2 个答案:

答案 0 :(得分:3)

感到惊讶的是,没有人能够回答这个问题,所以我做了一些挖掘工作,并在此处记录我的发现,以防其他人像我一样困惑:

  • ConfigurationSettings 已经死了。 (< = .Net 1.1)。它用于通过AppSettings成员公开一组名称/值对。

  • ConfigurationManager 是替代品(> .Net 2)。它位于System.Configuration.dll,是所有新配置的基础。它是一个静态类,因此可以在任何地方访问。它还公开了一组名为AppSettings的名称/值对,大概是为了向后兼容。

  • AppSettings 不是类型安全的,它实际上是字符串对。

  • ApplicationSettings 似乎引用ApplicationSettingsBase,这是一个用作较新样式类型安全设置基础的类。子类包含映射到设置的成员。 ConfigurationManager仍然用于管理/序列化这些内容。

  • Settings 是上面的工具生成的静态子类,它是通过向项目添加“设置文件”生成的,它允许设计时间编辑设置。它会生成到项目的Properties命名空间中,因此可以通过应用中的任何位置的 Properties.Settings 进行访问。尽管在整个文档中都提到了WinForms,但它似乎也可以从WPF中使用。

如果您不想使用设置文件,也可以使用自己的自定义类直接使用ConfigurationManager。有关使用概述的一些综合链接是:

Unraveling the Mysteries of .NET 2.0 Configuration

Decoding the Mysteries of .NET 2.0 Configuration

Cracking the Mysteries of .NET 2.0 Configuration

所有这些设置似乎都连续到app.config文件,虽然我已经看到了对单独的Applicationsettings文件的引用,所以我可能错了。

答案 1 :(得分:0)

如果没有很多要保存的设置,为什么不使用Windows注册表? File System and the Registry (C# Programming Guide)

关于ConfigurationManager等没有什么神奇之处,您可以使用自己的设置对象并将其序列化/反序列化为XML。

请参阅Application class以了解应用程序数据路径。

至于Properties.Settings.Default未在您的应用中解析,Solution Explorer - >你的项目 - > Add - > New Item - > Settings File。这将自动生成Properties.Settings类,允许您在设计时编辑应用程序设置。然后,您就可以致电Properties.Settings.Default.Save()