何时使用.NET设置vs config <appsettings>?

Joh*_*n K 24 .net appsettings settings.settings

是否有关于何时使用应用程序设置(不是每个用户设置)与.config文件<appsettings>的建议?

更新
希望了解一些更精细和重要的差异,因为它们都是有效的键/值存储.例如,我知道在web.config中修改appsettings将回收Web应用程序.

设置已经在.NET中存在了一段时间,我没有费心去看它们 - 也许一个有点多余,或者同时使用两者都没有意义......这就是我的细节期待了解和原因.

小智 16

这个问题有点陈旧,但我偶然发现了它,并考虑增加一些清晰度以防其他人也偶然发现它......

设置选项(与原始<appSettings>部分相对)在框架中具有强大的支持:

  1. 设置是强类型的(即bool,int,ConnectionString等),而不是全部作为字符串返回,以便在需要时由代码解析.

  2. 设置的范围可以是a)内部或公共,以及b)每个用户或每个应用程序(后者本质上意味着每台机器).

  3. 您的应用程序需要提供自己的界面来更改设置,但这很简单,因为设置属性在代码中是可读/写的,生成的类提供了保存更改的功能.

  4. 部署的app.config(或web.config)文件仅存储默认值(请参阅下面有关如何处理运行时更改) - 这意味着更改设置并在运行时保存它们不会更改.config文件 - 并通过扩展不会导致您的应用程序重新启动.

  5. 运行时的更改将保存到本地位置(c:\ ProgramData ..或c:\ Users\MyUser\AppData\Local ..中的某个位置),具体取决于所选的范围.因此,应用程序的后续版本可以安全地引入新设置,而不必担心丢弃以前自定义的值,因为它们被安全地存储起来.

希望有助于清理一些事情.

  • 值得指出的一个小问题是,Settings方法在**两个**位置存储每个设置的默认值:App.config**和**编译到Settings.Designer.cs文件中.当他们无法弄清楚设定值的来源时,这导致了一些我悲伤的人.当配置文件中缺少设置键名时,旧式appSettings方法会让您明确处理,而较新的设置将返回开发人员在设计器中设置为默认设置的任何内容(通常不是您想要的) . (3认同)

Cal*_*ell 6

到目前为止,答案中似乎忽略了一点是.config文件可以使用Transformation文件进行转换.这些文件默认情况下可用于Web.config文件(在Visual Studio中),并且使用SlowCheetah - Visual Studio的XML Transforms加载项为任意.config文件启用(SlowCheetah还添加了预览器并在构建时应用转换而不是仅在部署.


Dou*_*oug 3

应用程序设置和配置文件 appSettings 部分仅限于键值对,这对于简单设置很有用,但如果您需要更强大的数据持久性,您可能会考虑为应用程序创建自定义配置部分。这是有关创建自定义配置部分的 stackoverflow 文章

享受!