Possible Duplicate:
What is the difference between app.config file and XYZ.settings file?
我对 Visual Studio 中用于存储和管理桌面应用程序设置的这两种机制的明显冗余感到非常困惑:
- 您可以使用 XML
app.config
文件,将项目添加到<appSettings>
部分。这些可以使用ConfigurationManager
从代码中检索类。 - 或者,您可以使用 Settings.settings 文件通过编辑器添加单独的设置。 Visual Studio 将生成
Settings
用于在运行时类型安全地检索设置的类。
这两种机制似乎具有相同(或几乎相同)的目的。我知道存在一些差异,但我也对重叠及其后果感到困惑。例如,当我使用 Visual Studio 将设置添加到 Settings.settings
文件中,我输入的所有信息最终都会作为 app.config
中的条目文件也是如此。显然,存在同步机制:如果我更改 app.config
中的设置文件时,Visual Studio 提示我更新 Settings.settings
下次我在编辑器中打开它时将其保存为文件。
我的问题是:
- 为什么要采用两种机制而不是一种?
- 最常见的使用
app.config
的场景有哪些超过Settings.settings
,反之亦然? - 如果我的应用使用
Settings.settings
会发生什么情况我更改了app.config
中的值部署后?Settings.settings
没有同步可能会发生,因为它已经被编译和分发了。
注意。我搜索过有关这个主题的问题,但我更困惑。例如,对 this question here 的回答非常矛盾并且没有提供太多线索。
注2。我知道app.config
是一个设计时文件名,我熟悉 Visual Studio 将其复制并重命名到可执行文件夹的动态。
最佳答案
Why two mechanisms and not just one?
它们有不同的目的。设置 API 提供应用程序的读/写访问权限,而配置是只读的(除非您用代码编写文件)。
设置可以为每个用户或每个应用程序定义,并且被设计为 volatile 的。用户设置被写入用户配置文件存储中的隐藏文件夹,这是 UAC 允许的。
App.config 仅适用于每个应用程序。对 App.config 的更改不会自动生效。它需要重新启动或编写代码来刷新值。在UAC下,用户不允许写入应用程序目录,例如Program Files,因此该文件应被视为静态只读。
What are the most common scenarios for using app.config over Settings.settings, and vice versa?
您可以使用桌面应用程序中的“设置”来存储用户首选项或在运行时更改的设置。
您可以使用 App.config 进行更通用的静态设置,例如连接字符串等,或者定义应用程序中使用的组件的配置。
What happens if my app is using Settings.settings and I change a value in app.config after it's been deployed?
如果重新部署应用程序,它将采用新设置,除非计算机上已有用户/应用程序自定义设置,在这种情况下,它将继续使用这些设置,除非您删除它们。
如果您添加新设置,这些设置将会被拾取。事实上,默认值已融入到 Settings 类中,因此即使 app.config 为空,Settings 仍然有效。
关于.net - .NET 桌面应用程序中的 Settings.settings 与 app.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456291/