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

2023-12-26

我经常看到这样的问题的答案:“我应该如何在我的 .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 方法的示例:

  • 在 Windows 窗体 C# 应用程序中拥有配置文件的最简单方法 https://stackoverflow.com/questions/114527/simplest-way-to-have-a-configuration-file-in-a-windows-forms-c-application
  • 最佳实践:我应该如何在 C# 中存储设置(格式/类型)? https://stackoverflow.com/questions/535685/best-practices-how-should-i-store-settings-in-c-format-type

从我的角度来看有“设置文件”方法的以下优点:

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

如果您不确定“设置”文件方法的含义,请参阅这个帖子 https://stackoverflow.com/questions/577782/where-to-store-configuration-information/597835#597835这是有人建议使用设置文件而不是 app.confg 的少数示例之一。

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


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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么人们一致推荐使用 appConfig 而不是使用设置文件? (。网) 的相关文章

随机推荐

  • 有没有办法跟踪扩展的资源使用情况?

    我通过 GitHub 和 Google 搜索注意到很多人都有和我类似的问题 vscode 挂起 除了文本编辑器之外 什么都不起作用 有时除了调试之外一切都有效 像往常一样 禁用所有扩展使其可以完美运行 检查开发者工具 我注意到 Extens
  • HSQLDB ROWNUM 与 Oracle 的兼容性

    THe HSQLDB 变更日志 http hsqldb org doc 2 0 changelist 2 0 txt指出ROWNUM 被添加到v2 2 0在针对内存 HSQLDB 运行集成测试时 我使用它没有任何问题 但是 我想对真实的 O
  • 未捕获的类型错误:对象 [object Object] 没有方法“on”

    谁能帮我解决这个问题 当我使用最新 或较新 版本的 jQuery 时 下面的小脚本可以正常工作 但是 当我使用旧版本的 jQuery 时 我的脚本显示on函数不存在 这是我的脚本 不适用于旧版本的 jQuery document ready
  • C# json 到数组调试“应用程序进入中断模式”

    我想将 json 转换为数组 但当我尝试调试模式时 我得到 应用程序进入中断模式 并且如果我尝试运行它 程序就会冻结 我用的答案是将 json 转换为 C 数组 https stackoverflow com questions 95865
  • Javascript / jQuery 粘性,不使用 css 位置:固定

    我正在寻找一个用于粘性标题的 Javascript jQuery 插件 它不会将元素的样式切换到固定位置 通常 我正在使用这个http stickyjs com http stickyjs com 而且效果很好 我正在开发一个带有 jQ u
  • 如何忽略大文件并推送到 git repo

    之前我本地使用的是git 没有使用 gitignore然后 我创建了一个 gitignore文件 并将所有不需要的文件写入其中 当我将它们推送到 git repo 时 出现 fatal The Remote endhanged Outsta
  • 如何将一个 DataFrame 列转换为包含基于另一个 DataFrame 的列的真值表?

    我有一个df with a user id and a category 我想将其转换为真值表 以确定该用户是否至少有一个该类别的条目 但是 最终表还应包括 df list 中出现的所有类别的列 这些列可能根本不会出现在df 现在我用一个创
  • 在javascript中求10的幂,还有比这更好的方法吗

    我需要创建一个特定幂的整数值 这不是正确的术语 但基本上我需要创建 10 100 1000 等 幂 将被指定为函数参数 我想出了一个解决方案 但它感觉很老套而且错误 我想学习一种更好的方法 如果有一种方法 也许不是基于字符串的方法 此外 e
  • javascript退出for循环而不返回

    我有一个 for 循环 我想像这样退出 function MyFunction for var i 0 i lt SomeCondition i if i SomeOtherCondition Do some work here retur
  • 如何在palm mojo中使用jquery?

    我该如何才能在我的 palm mojo 应用程序中使用 jquery 查看这个问题 https stackoverflow com questions 1545773 palm pre frameworks 尤其是评论 编辑回应评论 我对P
  • 是否可以匹配React Router 4中路由的#部分

    在我的应用程序中 我想将路径和哈希与不同的组件相匹配 例如 pageA modalB 将显示 PageA 作为主页 模态 B 位于顶部 我尝试了以下方法 其中包含路径属性的许多变体
  • 无法从 Listvew.Resources 内部访问视图模型属性

    我正在尝试将 SelectedItem 绑定到视图 但是当视图位于资源块内时 视图无法访问视图模型 当数据上下文重新分配给子级时 绑定适用于文本块 但不适用于用户控件 NoteView 我是否缺少任何绑定 PFB 修改了 整个 代码和内联注
  • 衡量 React Native 应用程序的性能

    我需要测量 React Native 应用程序的性能 最好的工具是什么 我在谷歌浏览器中尝试了谷歌跟踪 并在 iOS 平台的 mac 中尝试了 Instruments 但这些显示了很多无组织的数据 我实现了一些工具来帮助我检查应用程序的性能
  • jQuery.parent() 似乎不起作用

    parent 不返回我指定的父元素 我没有发现我的代码或 html 有任何问题 JavaScript var vehicle function return init function var that this jQuery vehicl
  • Facebook 营销 API。地理搜索

    我正在尝试从 Facebook 获取一个国家 地区所有城市的列表 我从 v2 9 的 FB 文档开始 Facebook 营销 API https developers facebook com docs marketing api targ
  • 从 Windows 批处理文件将空白行回显到控制台 [重复]

    这个问题在这里已经有答案了 当从 Windows 批处理文件将状态消息输出到控制台时 我想输出空行分解输出 我该怎么做呢 以下三个选项中的任何一个都适合您 echo echo echo 例如 echo off echo There will
  • 在 Heroku 上安装 PyODBC 时找不到 sql.h

    我正在尝试在 Heroku 上安装 PyODBC 但我得到fatal error sql h No such file or directorypip 运行时的日志中 我该如何修复这个错误 要跟进下面的答案 Ubuntu 的示例 sudo
  • Azure Functions RunOnStartUp 在配置中设置而不是在编译时设置?

    我有一个 Azure 计时器触发函数 计划在生产中每 3 个月运行一次 然而 在测试环境中 我希望它在每次触发时在启动时运行 目前我有 TimerTrigger TimerInterval RunOnStartup false 我真的不想改
  • 使用 dplyr 和 rollapply 在数据框中滚动预测

    我的第一个问题在这里 我的目标是 给定一个带有预测变量的数据框 每列一个预测变量 行观察值 使用 lm 拟合回归 然后使用滚动窗口使用最后一个观察值来预测值 数据框如下所示 gt DfPredictor 1 40 Y X1 X2 X3 X4
  • 为什么人们一致推荐使用 appConfig 而不是使用设置文件? (。网)

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