2011-12-12 148 views
2

对于.Net世界来说,这是一个相当新的东西,我对将应用程序设置存储在WPF应用程序的位置和方式感到非常困惑。对.Net应用程序设置框架感到困惑

我一直看到对Properties.Settings.Default的引用,但是在我的WPF应用程序中无法解析,而且我找不到实际的类是为了找到要装入的程序集。这是仅限于WinForms技术吗?

我也发现ConfigurationSettings,这似乎已被弃用,并且ConfigurationManager,AppSettings, ApplicationSettingsSettings!我相信很多这些工作在一起,但是我在清理什么属于一起,什么是旧的或与WPF无关的问题上遇到了实际麻烦。

任何人都可以说出一个新手的基本选项吗?

+0

Properties.Settings.Default是生成Settings.Settings的代码文件中定义的变量。 –

回答

3

奇怪,没有人能回答这个问题,所以我做了一些更多的挖掘,并会在万一别人在这里记录我的结论是困惑,我说:

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

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

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

  • ApplicationSettings似乎是指ApplicationSettingsBase,这是作为新的风格类型安全设置的基类。子类包含映射到设置的成员。 ConfigurationManager仍然用于管理/序列化这些。

  • Settings是一个工具生成的上面通过添加“设置文件”到您的项目,它允许设置的设计时间编辑产生的静子类。它会生成到您的项目的属性名称空间中,因此可以通过您的应用中的任何位置的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

所有这些设置会出现得到serialsied到App.config文件,虽然我见过的引用分离应用程序设置文件,所以我可能是错误的。

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()

+0

我可以高兴地把它自己滚动到注册表或文件,但我虽然我会保存自己一些代码给出明显的现有机制。 – GazTheDestroyer

+0

另外,Application类是一个WinForms类。我的应用程序是WPF – GazTheDestroyer

+1

@GazTheDestroyer它在WinForms命名空间是的,但是你可以在没有问题的WPF应用程序中使用它;我做。同样,我用C#编写,并使用'Microsoft.VisualBasic.FileIO.TextFieldParser'类 - 也没有问题。这只是命名空间。 –