C# App.config 与设置文件

标签 c# .net app-config

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

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

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

再次感谢

最佳答案

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

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

  • 优点:.NET 中已经有一个标准 API 可以从 appSettings 部分读取设置。如果你只需要几个配置设置,使用这个现成的 API 比开发和测试你自己的类来读取你的配置文件要容易得多。此外,app.config 文件已经包含在 VS 项目中。
  • Pro: machine.config/app.config 有一个标准的层次结构。如果您计划这样的设置可以在机器范围内设置并覆盖或保留为单个应用程序,您应该使用 app.config。
  • 优缺点:App.config 在运行时缓存。如果您希望在应用程序运行时对其进行更新,则需要专门请求刷新配置文件的某些部分。对于 web.config,当文件中的某些内容发生更改时,Web 应用程序会自动重新启动。这很方便。
  • 缺点:app.config 与 .exe 文件存储在同一目录中。通常它会在 C:\Program Files 的子文件夹中。此目录在 Windows 7 中受到额外保护,不会被写入。您需要成为管理员组的成员才能在此处写入,如果您在控制面板中的 UAC(用户访问控制)级别未设置为 0(通常不是),操作系统将要求您确认写入 c:\程序文件。因此,没有管理员权限的用户将无法更改 app.config 中的配置。以编程方式更改设置也是如此:如果应用程序不是在 Windows 7 上的管理员用户下运行,则在尝试编写 app.config 时会出现异常。您自己的配置文件通常位于 C:\ProgramData\或 c:\Users 子文件夹(在 Windows 7 上)。这些位置对用户或程序编写更友好。
  • 缺点:如果用户编辑了您的 app.config 文件并意外损坏了它,整个应用程序将不会以一些晦涩的错误消息启动。如果您的单独配置文件已损坏,您将能够提供更详细的错误消息。

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

    关于C# App.config 与设置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13100498/

    相关文章:

    c# - 使用 RSACryptoServiceProvider 进行公钥加密

    C# 等效于 VB 6 DoEvents

    c# - 如何在 vsix 项目中获取并使用 Visual Studio 命令

    c# - 通用应用程序MySQLConnector连接错误

    c# - 如何在Nest中创建快照?

    c# - WPF 和 ListView - 在运行时添加列和项目

    c# - app.configs 和 MSTest 项目 - 连接字符串的空引用

    c# - 从 app.config 文件的 web.config 部分获取值?

    entity-framework - 如何配置 EF 的 DbMigration 不将日期时间添加为生成的迁移文件名的前缀

    c# - Unity 中的闪光效果