我实际上处于 .NET 相关内容的学习阶段,并且正在探索如何保存应用程序。我最终编写了自己的类,将设置保存在 XML 文件中,然后我发现 .NET 本身支持保存应用程序设置。
但我找到了两种方法来做到这一点。当我在 Visual Studio 2008 中打开添加新项目对话框时,它提供了创建设置文件 (.settings) 或配置文件 (.config) 的选项。两者之间有什么区别,应该在什么场景下使用它们?
我实际上处于 .NET 相关内容的学习阶段,并且正在探索如何保存应用程序。我最终编写了自己的类,将设置保存在 XML 文件中,然后我发现 .NET 本身支持保存应用程序设置。
但我找到了两种方法来做到这一点。当我在 Visual Studio 2008 中打开添加新项目对话框时,它提供了创建设置文件 (.settings) 或配置文件 (.config) 的选项。两者之间有什么区别,应该在什么场景下使用它们?
更新:在 ASP.NET Core Land 中,不再通过其中任何一个管理配置 -请参阅 Travis Illig 的这篇精彩文章,其中 az 开启Microsoft.Extension.Configuration
,Microsoft.Extensions.Configuration.Binder
它实际上是所有这些的超集
设置(来自 .settings 集和Configuration.AppSettings
)存储在 .config 文件中[以及许多其他内容]。
不同之处在于 .settings 的东西 [在 .NET 2.0 / VS2005 中添加] 在一组属于一起的设置之上分层了一个强类型类,而Configuration.AppSettings
只是让您检索字符串,强制您进行任何转换,而不是有默认的概念。(配置类实际上已被分流到一个侧面程序集中以反映这一点 - 如果需要,您需要显式添加对 System.Configuration 的引用)。
将 .settings 添加到您的项目将导致添加一个 app.config 来容纳设置(如果您还没有设置)。每次更改组件/应用程序的设置列表时,都会自动生成读取设置的类。
.Settings 的其他功能是能够将某些设置指定为特定于用户的设置(并且还可以通过一次调用保存用户特定的设置)。
使用 .Settings 的最佳理由通常是您能够通过遵循属性的用法来清楚地识别谁在使用代码库中的哪个设置(并且每个集合都是 XML 文件中的一个单独块)。Configuration.appSettings
在本质上更具全局性 - 它只是一组属性,您不知道哪个 DLL、子系统或类取决于特定的设置条目。有关更多信息,请参阅Steven Smith的这篇博文。
最后,如果您对设置管理的了解还不够多,那么您不会因为完整性或大量的想法和角度而击败Rick Strahl 的这篇关于该主题的帖子。
旁白:还有本文概述的ASP.NET vNext 配置内容,它非常灵活,提供了不同的配置设置管理角度。
设置文件是一个资源文件,您可以在其中指定不同的设置及其默认值。
这些值本身是在应用程序配置文件(.config 文件)中配置的。
永远不会部署设置文件,因此您将需要配置文件来进行配置。
app.config 文件与应用程序存储在同一目录中。普通用户没有写权限(例如在“程序文件”中)。
设置文件应该存储在用户的“AppData”目录中(他有读/写权限)。
因此,将设置文件用于用户可配置选项。