22

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

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

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

再次感谢

4

2 回答 2

29

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

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

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

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

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

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

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

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

于 2012-10-27T15:33:22.543 回答
2

反过来说,设置文件(或最初称为的 ini 文件)是在 Windows 95 之前用于保存应用程序设置(键/值对)的机制。随着 Windows 95 的发布,建议应用程序设置为移入 Windows 注册表(这被证明是有问题的,因为如果您搞砸了注册表,您的 Windows 可能不再能够启动)。

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

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

于 2012-10-27T13:21:25.240 回答