.net - 为什么人们一直推荐使用 appConfig 而不是使用设置文件? (。网)

标签 .net .net-2.0 app-config appsettings application-settings

我经常看到以下问题的答案:“我应该如何在我的 .NET 应用程序中存储设置?”是通过手动向 app.config(或 web.config)添加条目来编辑 app.config 文件,如下所示:

<configuration> 
  <appSettings>
    **<add key="ConfigValueName" value="ABC"/>**
  </appSettings>
</configuration>

然后,像这样访问它们:
string configValue = Configuration.AppSettings["ConfigValueName"];

我将上述方法称为“app.config”方法。我很少看到人们建议向项目添加“设置”文件。我已经在网络上和 stackoverflow 上看到过很多次了......我开始怀疑我是否遗漏了什么......因为我不确定为什么你会使用这种方法而不是使用“设置“文件。我直到 VS2005 才进入 .NET,所以我的一个理论是,VS2003 中的事情是如何完成的,人们从未切换过?

人们推荐 app.config 方法的示例:
  • Simplest way to have a configuration file in a Windows Forms C# Application
  • Best-Practices : how should I store settings in C# (Format/Type)?

  • 从我的角度来看,有 “设置文件”方法的以下优点:
  • 可用于应用程序设置(所有用户通用的设置)和来自同一界面的用户设置。
  • 能够在 Visual Studio 中使用设置设计器支持。更不容易出错,然后直接编辑 XML 文件恕我直言。
  • 重构 - 您可以重命名特定的设置名称,它会自动更新代码中的引用。
  • 编译类型检查。
  • 自动完成支持。
  • 属性网格功能。我发现 PropertyGrid 控件是制作快速选项表单的一种非常简单的方法。你只要做propertyGrid1.SelectedObject = Settings1.Default;你就完成了。

  • 如果您不确定我所说的“设置”文件方法是什么意思,请参阅 this post这是有人建议使用设置文件而不是 app.confg 的少数示例之一。

    编辑:请理解:本主题的目的是弄清楚为什么人们会使用上面概述的 app.config 方法而不是设置文件方法。我遇到了设置文件方法的局限性,有时不得不推出我自己的自定义解决方案。那是完全不同的讨论。

    最佳答案

    我认为两者最大的区别在于应用程序不能改变app.config中的值。 .这些值在运行时读取,并且没有内置支持将新值写入配置文件。

    可以使用 Save() 更改设置文件命令。

    对设置文件的内置支持的一个主要问题是设置文件的存储位置。如果您查看您的 APPDATA 文件夹,您会看到有一个用于存放公司名称的文件夹,然后是一个带有产品名称的子文件夹,然后是一个带有半随机名称和版本信息的子文件夹.

    每当您发布新版本时,由于设置文件的存储位置,它不会从以前的版本中找到设置文件。也无法更改设置文件的存储位置。

    我在一个项目中使用了它,发现创建我自己的 AppSettings 类更有用,该类使用 XML 文件进行设置。我可以控制文件的格式和位置。

    关于.net - 为什么人们一直推荐使用 appConfig 而不是使用设置文件? (。网),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1016707/

    相关文章:

    c# - 在 windows azure 上部署时自定义 app.config

    .net - 如何在 C# 中获取忽略 Wifi(无线)LAN 连接的有线 LAN 连接列表

    .net - 如果所需的 app/web.config 配置设置不存在,最适合抛出的异常是什么?

    .net - Arial Unicode MS是WinForms UI的正确字体吗?

    VB.Net 2005,如何从(当前日期减去 7 天)中减去日期并产生天数?

    c# - 使用 Ajax 自动完成

    .net - .net(或它的任何部分)是开源的吗?

    c# - MEF:缺少 ComposeParts

    .net - Perfmon、PerfMonitor 和 PerfView