这个问题可能听起来很琐碎,但我简单地查看了一下网络上的资料,发现app.config
基本上是一种旧的机制,用于为应用程序存储应用程序键/数据对。
我想知道的是,作为.NET开发人员,我们是否有理由选择使用app.config
而不是Settings文件
?
-可否请有人提供一些关于两者的优缺点,以便我们可以正确地使用它们。
再次感谢
这个问题可能听起来很琐碎,但我简单地查看了一下网络上的资料,发现app.config
基本上是一种旧的机制,用于为应用程序存储应用程序键/数据对。
我想知道的是,作为.NET开发人员,我们是否有理由选择使用app.config
而不是Settings文件
?
-可否请有人提供一些关于两者的优缺点,以便我们可以正确地使用它们。
再次感谢
App.config 和 Web.config 是 .NET 配置系统的一部分,前者用于桌面应用程序,后者用于 Web 应用程序。它们主要用于控制 .NET 框架在我们的应用程序中的设置,这些设置包括如下内容:程序集版本的替换(<assemblyBinding> 部分)、.NET 框架版本的替换(<startup> 部分)等(请参见 msdn 以获取完整的 app.config 架构)。还有一个部分是专门为应用程序开发人员的自定义设置而设的(<appSettings>)。同时,也可以创建自定义部分。因此,当需要存储设置时,可以使用 app.config 或创建自己的单独配置文件。
以下是使用 app.config 的优缺点:
优点:.NET 已经有了标准 API 来从 appSettings 部分读取设置。如果只需要几个配置设置,则使用这个已经准备好的 API 要比开发和测试自己的类来读取配置文件容易得多。此外,app.config 文件已经包含在 VS 项目中。
优点:机器范围内和应用程序范围内的设置有一个标准层次结构。如果你计划这样的设置,可以在机器范围内设置,并为个别应用程序覆盖或保留原样,则应使用 app.config。
优点/缺点:App.config 在运行时被缓存。如果你预计在应用程序运行时更新它,需要明确请求配置文件的某个部分进行刷新。对于 Web.config,当文件中的内容发生变化时,Web 应用程序会自动重新启动,这很方便。
缺点:app.config保存在与.exe文件相同的目录中。通常它会位于C:\Program Files的子文件夹中。这个目录在Windows 7中受到额外保护,不能进行写入。您需要是管理员组的成员才能在那里进行写操作,并且如果您在控制面板中的UAC(用户访问控制)级别未设置为0(通常不会),操作系统将要求您确认写入c:\Program Files。因此,没有管理员权限的用户将无法更改app.config中的配置。同样适用于以编程方式更改设置:如果您的应用程序在Windows 7上不是在管理员用户下运行,则在尝试写入app.config时,应用程序将获得异常。您自己的配置文件通常存储在C:\ProgramData\或c:\Users子文件夹(在Windows 7上)。这些位置更适合用户或程序进行写入。
缺点:如果用户编辑了您的app.config文件并意外破坏了它,整个应用程序都将无法启动,并显示一些晦涩的错误消息。如果您的单独配置文件损坏,您将能够提供更详细的错误消息。
总之:app.config为您提供了更轻松(更快速的开发)的方法,通常适用于只读设置。自定义设置文件为您提供了更多自由(文件存储位置、验证/错误处理、其模式更具灵活性),但在开发过程中需要更多工作。