.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 方法的示例:

在我看来,“设置文件”方法有以下优点:

  1. 可用于同一界面中的应用程序设置(所有用户通用的设置)和用户设置。
  2. 能够使用 Visual Studio 中的设置设计器支持。恕我直言,比直接编辑 XML 文件更不容易出错。
  3. 重构 - 您可以重命名特定设置名称,它会自动更新代码中的引用。
  4. 编译类型检查。
  5. 自动完成支持。
  6. 属性网格功能。我发现 PropertyGrid 控件是制作快速选项表单的非常简单的方法。您只需执行 propertyGrid1.SelectedObject = Settings1.Default; 即可完成。

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

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

最佳答案

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

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

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

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

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

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

相关文章:

javascript - .NET 和 javascript 之间的 64 位 int 差异

c# - 在 PCL (.Net 4.5 + phone 8) 中使用 System.Net.Sockets

c# - 使用现有控件向窗体添加选项卡控件

C# Winforms 应用程序发送电子邮件失败 : The remote name could not be resolved: 'smtp. gmail.com ;操作超时

c# - 放置在 TableLayout 中的停靠控件的大小不会自动小于其创建大小

c# - 设置具有对象 DataSource 的 DataGridView 中自动生成的列的格式

asp.net - .Net 2.0 ServiceController.GetServices()

c# - 如何让我的应用程序在两个 app.config 文件之间进行选择?

c# - 为什么应用程序设置在 app.config 中是只读的?

c# - 在 App.config 中为所有 TraceSources 添加一个默认的 TraceListener