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

Hem*_*ant 71 .net settings configuration appsettings

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

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

Rub*_*ink 54

更新:在ASP.NET Core Land中,不再通过其中任何一个来管理配置 - 请参阅Travis Illig的这篇精彩的文章Microsoft.Extension.Configuration,Microsoft.Extensions.Configuration.Binder其中包含az,并且实际上是所有这些的超集


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

区别在于.settings东西[在.NET 2.0/VS2005中添加]在一组属于一起的设置之上层叠了一个强类型类,而Configuration.AppSettings只是让你检索字符串,强迫你进行任何转换,并且不会有默认的概念.(Configuration类实际上被分流到一个侧面程序集中以反映这一点 - 如果需要,您需要显式添加对System.Configuration的引用).

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

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

所有人使用的最佳理由.设置通常是通过遵循属性的使用(并且每个集合是XML文件中的单独块),您能够清楚地识别谁正在使用代码库中的哪个设置.Configuration.appSettings它本质上更具全球性 - 它只是一个属性包,你不知道哪个DLL,子系统或类依赖于特定的设置条目.请参阅史蒂芬史密斯的这篇博文,了解更多信息.

最后,如果你还没有完全阅读有关设置管理的内容,那么你就不会因为完整性或大量的想法和角度而在这个主题上击败这个Rick Strahl帖子.

题外话:还有在ASP.NET vNext配置的东西,这篇文章中概述这是相当灵活的,并提供配置设置管理不同的角度.

  • 很抱歉没有提及.用户设置是存在默认值的原因之一(如果用户尚未使用该应用程序,默认值将应用,直到保存更改).用户设置存储在用户配置文件(Users\XXX)目录中的单独配置文件中.用户设置也可以更新(系统设置不能使用默认API,不应该 - 它们存在于Program Files中,并且无法安全地控制多个用户访问那里.) (3认同)

Ger*_*nck 5

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

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

永远不会部署设置文件,因此您将需要配置文件来进行配置。