首页 > 解决方案 > 建议在 .NET 核心中使用 app.config 和 ConfigurationManager 吗?

问题描述

我们正在将一些 .NET 应用程序从完整框架迁移到 .NET 核心,并且我们正在尝试找出最好的方法。

主要变化之一是与应用程序配置方式相关的变化。在 .NET 完整框架中,我们曾经将应用程序设置放在 app.config 文件中,并通过ConfigurationManager 类读取它们。

我知道 .NET 核心支持基于 nuget 包Microsoft.Extensions.Configuration和配置源的各种包的新配置系统。但是,与此同时,Microsoft 通过 nuget 包System.Configuration.ConfigurationManager将对 ConfigurationManager 类的支持扩展到 .NET 核心。

以下是我的问题:

标签: c#.net-coreapp-configconfiguration-files

解决方案


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

谁在这里使用 .Net 开发?三十岁以下的人,太棒了!那么我们该如何应对呢?变得模块化、更快、跨平台且更易于上手。否则你会去,我想学习编码。下载 Visual Studio,然后四个小时后编写 hello world。

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

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

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


推荐阅读