2009-05-26 73 views
67

我实际上是在.NET相关的东西的学习阶段,我正在探索如何保存应用程序。我最终编写了自己的类,它将设置保存在XML文件中,然后我发现.NET本身支持保存应用程序设置。app.config文件和XYZ.settings文件有什么区别?

但我找到了2种方法来做到这一点。当我在Visual Studio 2008中打开添加新项目对话框时,它提供了创建设置文件(.settings)或配置文件(.config)的选项。两者之间有什么区别,以及在什么情况下应该使用它们?

回答

51

设置(来自.settings集合和Configuration.AppSettings)都存储在.config文件中[与许多其他内容一起]。

不同之处在于.settings的东西[在.NET 2.0/VS2005中添加]在属于一组属性的设置上叠加了强类型类,而Configuration.AppSettings只是让您检索字符串,迫使您执行任何转换,并没有默认的概念。 (配置类实际上被分流到一个侧面组件中以反映这一点 - 如果需要,您需要明确添加对System.Configuration的引用)。

将.settings添加到您的项目将导致app.config被添加到如果您还没有设置的设置。每次更改组件/应用程序的设置列表时,都会自动生成读取设置的类。

.Settings的其他功能是可以将某些设置指定为特定于用户(也可以通过单个调用保存用户特定的设置)。

所有使用.Settings的最佳理由通常是您可以通过遵循属性的用法(并且每个集合都是XML文件中的独立块)来清楚地识别谁在代码库中使用哪个设置的功能。 。 Configuration.appSettings在本质上更具全局性 - 它只是一个属性包,你不知道哪个DLL,子系统或类取决于特定的设置条目。请参阅this blog post from Steven Smith了解更多信息。

最后,如果您对设置管理的了解还不够充分,那么您就不会打败this Rick Strahl post on the subject以获得完整性或绝对数量的想法和角度。

此外还有ASP.NET vNext Configuration东西,outlined in this article这是非常灵活的,并提供了不同的配置设置管理角度。

+0

感谢您的回答。只是混淆了一点:有两种设置。一个是应用程序设置,另一个是用户设置。如果两种设置均存储在配置文件中,那么用户设置对于不同的用户将有何不同? – Hemant 2009-05-26 10:43:20

+2

对不起,提及这一点。用户设置是默认设置存在的原因之一(如果用户尚未使用该应用程序,默认设置将一直保存,直到保存更改为止)。用户设置存储在用户配置文件(Users \ XXX)目录中的单独配置文件中。用户设置也可以更新(系统用户不能使用默认API,也不应该 - 它们位于Program Files中,并且不可能安全地控制多个用户访问那里。) – 2009-05-26 11:06:35

+0

配置管理器在哪里适合所有这些?我试图和未能得到那告诉我我settings.settings居住的地方,然后在那里保存一个空白的配置 – 2014-01-10 14:38:08

3

设置文件是一个资源文件,您可以在其中指定不同的设置及其默认值。

这些值本身是在应用程序配置文件(.config文件)中配置的。

设置文件从未部署,所以您需要配置文件来完成配置。

0

app.config文件存储在与应用程序相同的目录中。普通用户将不具有写入权限(例如在“程序文件”中)。

设置文件应该存储在用户“AppData”目录中(他拥有r/w权限)。

因此,使用用户可配置选项的设置文件。

相关问题