在 .NET 核心中使用 app.config 和 ConfigurationManager 是否可取?

Is using app.config and ConfigurationManager in .NET core advisable?

我们正在将一些 .NET 应用程序从完整框架迁移到 .NET 核心,我们正在努力寻找这样做的最佳方法。

其中一项主要更改与应用程序的配置方式有关。在 .NET 完整框架中,我们过去常常将应用程序设置放在 app.config 文件中,并通过 ConfigurationManager class 读取它们。

我知道.NET core支持基于nuget包的新配置系统Microsoft.Extensions.Configuration and the various packges for the configuration sources. However, at the same time, Microsoft has extended the support for the ConfigurationManager class to .NET core, by means of the nuget package System.Configuration.ConfigurationManager

这是我的问题:

一些历史,开始缩小 .Net 应用程序中包含的依赖项的原始团队是 Asp.Net 团队。与更模块化的框架相比,微软的 Web 框架显得臃肿,导致请求延迟。据经常在演讲中讲这个笑话的 Scott Hansleman 说:

Who here develops with .Net? Nobody under thirty, fantastic! So how do we combat this? Become modular, faster, cross platform, and easier to get started. Otherwise you would go, I want to learn to code. Download Visual Studio then four hours later write hello world.

因此网络团队开始了这一转变,对于网络而言,这使得 JavaScript 对象表示法成为比扩展标记语言更好的选择。但是在 Asp.Net 团队进行这些修改后的一年内,Microsoft 重组了他们的组织以构建一个 .Net。他们意识到,这些变化不仅会波及 Asp.Net 团队。较旧的项目类型不兼容或使用 JavaScript 对象表示法,因此他们将其 .csproj 和其他配置类型转换回扩展标记。但是很多开发人员真的很喜欢 JavaScript Object Notation 文件的设置,它们更小、更清晰,而且不那么冗长。因此,Microsoft 通过 Microsoft.Extensions.Configuration 重新添加了该功能,以提供灵活性。

  • 主要目的是为了向后兼容。
  • 确保它也针对任何 .Net Standard 应用程序进行了更新。

所以你可以利用其中任何一个。没有真正的好处,除了扩展标记与 JavaScript 对象相比,阅读起来往往非常乏味和冗长。 JavaScript Object Notation 往往更容易。