app.config文件和XYZ.settings文件有什么区别?

我实际上是在.NET相关的东西的学习阶段,我正在探索如何保存应用程序。 我最终编写了自己的类,将设置保存在一个XML文件中,然后我发现.NET本身支持保存应用程序设置。

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

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

不同之处在于.settings(在.NET 2.0 / VS2005中添加的)在一组属性上设置了一个强types的类,而Configuration.AppSettings只是让你检索string,迫使你做任何转换,并没有违约的概念。 (Configuration类实际上已经被分stream到一个侧面组件来反映这一点 – 如果你需要,你需要明确地添加一个对System.Configuration的引用)。

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

.Settings的其他function是能够将某些设置指定为用户特定的(也可以通过一次调用保存用户特定的设置)。

所有使用设置的最佳理由是设置通常是通过遵循属性的用法(每个设置是XML文件中的一个单独的块)来获得清楚地识别谁在使用代码库中的哪个设置的function。 Configuration.appSettings在本质上更具全局性 – 它只是一大堆属性,你不知道哪个DLL,子系统或类依赖于特定的设置条目。 从史蒂文·史密斯 ( Steven Smith)那里看到这篇博客文章 。

最后,如果你对设置pipe理还不够了解,那么你就不会在这个问题上击败这个Rick Strahl的post,以获得完整性或者数量的想法和angular度。

除此之外,还有一些ASP.NET vNextconfiguration的东西, 在这篇文章中提到 ,它非常灵活,并且在configuration设置pipe理方面提供了一个不同的angular度。

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

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

设置文件从不部署,所以您将需要configuration文件来进行configuration。

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

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

因此,请使用设置文件进行用户可configuration选项。