应用程序设置和 settings.settings 和 configurationmanagers.appsettings 哦,我的

Posted

技术标签:

【中文标题】应用程序设置和 settings.settings 和 configurationmanagers.appsettings 哦,我的【英文标题】:application settings and settings.settings and configurationmanagers.appsettings oh my 【发布时间】:2012-01-23 08:17:43 【问题描述】:

好吧,我正在尝试学习有关如何实现应用程序和用户设置的所有不同选项,这一切都让我很困惑。

使用创建 <applicationSettings> 部分的 settings.settings 设计器与使用根据文档创建 <appSettings> 部分的 ConfigurationManager.AppSettings 属性有什么区别?

使用 settings.settings 设计器进行应用/用户设置有哪些优点/缺点?

如果我假设 System.Configuration 命名空间中的类(尤其是 System.Configuration.Configuration 类)主要用于创建自定义部分,我是否正确?

是否可以使用 System.Configuration 命名空间中的任何内容来创建或读取 <applicationSettings> 部分而不使用 settings.settings 设计器?那只是一个自定义部分吗?

如你所见,我很困惑......我希望我的问题能从那时起。请告诉我您知道的内容,我将继续阅读此文档以尝试理解。我的问题不在于我无法完成我需要完成的工作(我可以使用 settings.settings 完成我需要做的事情)......问题实际上是理解这个混乱并知道我所有的选择。

提前谢谢你。

更新:

Microsoft 在线文档在这个主题上很糟糕(基本上不存在)。终于找到了

http://www.codeproject.com/Articles/19675/Cracking-the-Mysteries-of-NET-2-0-Configuration

这很好地解释了这一切。自从我意识到配置文件被合并后,它做得更多了!

【问题讨论】:

Pros and cons of appSettings vs applicationSettings (.NET app.config)的可能重复 【参考方案1】:

settings.settings 和 .config(app.config、web.config 或其他)本质上都是做同样的事情——也就是说,它们将值存储在一个 XML 文件中,该文件可以跨会话持久保存(settings.settings还在 Settings.Designer.* 文件中创建一个公共属性,因此 VS 设计器可以从中读取)。

*.config 文件是较旧的处理方式,而 settings.settings 是“较新”的处理方式。使用 settings.settings,您还可以使用方便的界面来添加对象(即直接从 Visual Studio 中,而不是手动编辑 XML)。

此外,通过 settings.settings,您可以获得用户范围和应用程序范围。用户范围在运行时是读/写的,而我相信应用程序范围在运行时是只读的。

System.Configuration 命名空间用于读取和写入 *config 文件。

处理 *.config 文件的一个不错的选择是使用 Rick Strahl 的 configuration manager tool。它为整个 *.config 文件创建了一个很好的面向对象视图,允许对条目进行 eacy 加密等。

【讨论】:

【参考方案2】:

您看到的 Settings.Settings 内容是您想要用于用户特定设置的内容。设计器用于设置这些设置的默认值。这些默认值存储在 app.config 文件中,该文件用于保存应用程序设置/配置。即:用户设置默认值本身就是应用程序设置。

这有帮助吗? ;)

【讨论】:

以上是关于应用程序设置和 settings.settings 和 configurationmanagers.appsettings 哦,我的的主要内容,如果未能解决你的问题,请参考以下文章

不要用 clickonce 覆盖 settings.settings 文件

将自定义类的集合添加到 Settings.Settings

如何使 Settings.settings 数据持久化

如何在文件版本更改中保留 .settings/.config 文件中的更改?

如何在程序中设置 Android 的 IP,DNS 和网关

c#app.config 与 Settings.settings