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

时间:2009-05-26 08:57:58

标签: .net configuration settings appsettings

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

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

3 个答案:

答案 0 :(得分:53)

更新:在ASP.NET Core Land中,不再通过以下任何一种方式管理配置 - see this fantastic writeup from Travis Illig with the a-z on Microsoft.Extension.Configuration and Microsoft.Extensions.Configuration.Binder which are effectively a superset of all this


设置(来自.settings set和Configuration.AppSettings)都存储在.config文件中[以及许多其他内容]。

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

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

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

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

最后,如果你还没有完全了解设置管理,那么你不会因为完整性或大量的想法和角度而打败this Rick Strahl post on the subject

ASIDE:还有ASP.NET vNext Configuration内容,outlined in this article非常灵活,在配置设置管理方面提供了不同的角度。

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:0)

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

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

因此,请将设置文件用于用户可配置选项。