【问题标题】:App.config deprecated C#?App.config 已弃用 C#?
【发布时间】:2015-07-20 10:34:10
【问题描述】:

我正在尝试了解应用程序设置/AppSettings。

我的理解是,AppSettings(在 app.config 文件中)是通过 ConfigurationManager.AppSettings 访问的,这被视为已弃用的功能。

我了解应用程序设置是通过 Properties.Settings.Default 访问的,并且通常创建为 .settings 文件(在 Visual Studio 中,这可以在项目属性中完成)。

如果这是正确的(请确认),我的问题是为什么 Visual Studio 中的所有项目都会自动创建 App.config 文件?我可以/应该删除这个文件并创建一个 Settings.settings 文件吗?我应该同时使用吗? (为什么?)我可以使用 Properties.Settings 访问 app.config 文件吗?如果有,怎么做?

另外,如果 Properties.Settings.Default 访问“默认”设置文件,您将如何/为什么访问默认文件以外的文件?

编辑:AppSettings 与应用程序设置线程没有回答这个问题,因为我的具体问题是为什么我需要一个 App.Config 文件。

【问题讨论】:

标签: c# app-config application-settings


【解决方案1】:

ApplicationSettings 优于 AppSettings,因为它们是强类型的,但有时(例如在 Azure 中)首选 AppSettings,因为它们可以从 Azure 控制面板逐个实例设置。

也就是说,让我们看看您的问题中与 Settings.Default 与 App.Config 相关的另一部分。

我不会从每个项目中删除 App.Config,因为它会在您更新设置时自动更新。设置文件在代码中具有默认值,但 App.Config 文件可以在运行时覆盖这些值。能够将相关部分复制到将使用库的新应用程序(到它们的 app.config 或 web.config)中,这真是太好了。

您的项目中唯一执行的 app.config 文件是启动项目,该 app.config(或可能是 web.config)中的值是运行时使用的值。

希望这可以消除有关文件关系的一些困惑。

配置文件示例结构:

ProjectA
- ProjectA.Settings
- App.Config // VS syncs with Settings file
ProjectB
- ProjectB.Settings
- App.Config // VS syncs with Settings file
ProjectC (Startup Project
- ProjectC.Settings
- App.Config
    // Can contain override settings for ProjectA.Settings and ProjectB.Settings 

【讨论】:

  • 所以我没有意识到 .settings 文件和 app.config 相互更新。但我仍然不确定我是否理解每个人的目的。为什么有两个文件做同样的事情(即保存用户/应用程序数据)?是因为与 app.config 不同,设置文件与命名空间相关联,因此您可以有多个设置文件由一个 App.Config 文件控制?
  • 正确。最后,您的启动应用程序 App.Config 可能包含多个 *.Settings 文件配置的部分,以覆盖默认值。
  • 但是为什么不只有几个 .settings 文件,而没有 App.Config 文件呢? .settings 文件只是修改 app.config 文件的一种用户友好方式,还是两者都在运行时实际访问?
  • 在运行时,设置文件将被启动项目应用程序配置(如果已定义)覆盖。设置文件包含默认值,app.config 包含最终值。这允许您在运行时通过 App.Config 更改环境设置,因为设置文件被编译到代码中,并且如果不重新编译/重新部署就无法更改。
  • 是的,上面的编辑更清晰。 App.Config 和 .Settings 将在单个项目中对齐,但在上面的示例中,如果您修改 App.Config C,则在运行应用程序时 ProjectA.Settings 和 ProjectB.Settings 将被更改。我现在明白了,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 2014-02-12
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
相关资源
最近更新 更多