C#App.config与设置文件

时间:2012-10-27 13:12:33

标签: c# .net app-config

这可能听起来像是一个微不足道的问题,但我已经简要地查看了网页,我发现app.config基本上是一种旧的机制,用于存储应用程序的应用程序密钥/数据对。

我想知道的是,我们(作为.NET开发人员)选择在app.config上选择使用Settings file是否有任何理由?

- 有人请提供一些优点和缺点,以便我们可以正确使用它们。

再次感谢

2 个答案:

答案 0 :(得分:26)

桌面应用程序的App.config和Web应用程序的Web.config是.NET配置系统的一部分。它们主要用于控制与我们的应用程序相关的.NET框架设置。这些配置设置为程序集版本的替换(部分< assemblyBinding>),.NET框架版本的替换(< startup>)等。(有关完整的app.config架构,请参阅msdn。) section专门用于应用程序开发人员的自定义设置(< appSettings>)。还可以创建自定义部分。因此,当我们需要存储设置时,我们可以捎带在app.config上或创建我们自己的单独配置文件。

以下是使用app.config的优缺点:

  1. Pro:.NET中已有一个标准API可以从appSettings部分读取设置。如果您只需要几个配置设置,那么使用这个现成的API要比开发和测试自己的类来读取配置文件容易得多。此外,app.config文件已包含在VS项目中。

  2. Pro:有一个标准的machine.config / app.config层次结构。如果您计划的设置可以在机器范围内设置并覆盖或保留为各个应用程序,则应使用app.config。

  3. Pro / Con:App.config在运行时缓存。如果您在应用程序运行时预计会对其进行更新,则需要专门请求刷新配置文件的某些部分。对于web.config,当文件中的内容发生变化时,Web应用程序会自动重新启动。这很方便。

  4. Con:app.config与.exe文件存储在同一目录中。通常它将在C:\ Program Files的子文件夹中。此目录在Windows 7中受到额外保护,无法编写。您需要成为Administrators组的成员才能在那里写入,如果您在控制面板中的UAC(用户访问控制)级别未设置为0(通常不是),操作系统将要求您确认写入c:\程序文件。因此,没有管理员权限的用户将无法在app.config中更改配置。以编程方式更改设置也是如此:如果在Windows 7上没有管理员用户运行,则尝试编写app.config时应用程序将出现异常。您自己的配置文件通常会转到C:\ ProgramData \或c:\ Users子文件夹(在Windows 7上)。这些位置对用户或程序的写作更友好。

  5. Con:如果用户编辑了您的app.config文件并且意外损坏了它,整个应用程序将不会以一些模糊的错误消息启动。如果您的单独配置文件已损坏,您将能够提供更详细的错误消息。

  6. 总之:app.config为您提供了更简单(更快速的开发)方法,主要适用于只读设置。自定义设置文件为您提供更多自由(存储文件的位置,验证/错误处理,其架构更灵活),但在开发过程中需要更多工作。

答案 1 :(得分:1)

你有它向后,设置文件(或最初调用的ini文件)是用于在Windows 95之前保存应用程序设置(键/值对)的机制。随着Windows 95的发布,建议使用应用程序设置被移动到Windows注册表中(这证明是有问题的,因为如果你搞砸了你的注册表,你的Windows可能无法启动)。

.config文件与.Net一起发挥作用。与简单的键/值对相比,XML格式允许更多动态和复杂的设置配置。

现代用户/设置文件是.config文件的XML扩展(在特定条件下可以覆盖.config中某些设置的设置)。