是否建议在.NET Core中使用app.config和ConfigurationManager?

时间:2019-01-28 22:23:04

标签: c# .net-core app-config configuration-files

我们正在将某些.NET应用程序从完整框架迁移到.NET核心,并且我们正在尝试找到实现此目的的最佳方法。

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

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

这是我的问题:

  • 配置.NET核心应用程序的最佳意图是什么?
  • 仅出于向后兼容的目的实现了对app.config文件的支持,因此更容易将旧应用程序移植到.NET核心,或者它被认为是最佳实践,并且将来会得到维护?
  • li>

1 个答案:

答案 0 :(得分:4)

有一段历史,Asp.Net团队是开始缩小.Net应用程序中包含的依赖关系的原始团队。与更多的模块化框架相比,Microsoft的Web框架ated肿,导致请求延迟。斯科特·汉斯勒曼(Scott Hansleman)经常在演讲中讲这个笑话:

  

谁在用.Net开发?不到三十岁的人,太棒了!那怎么办   我们打击这个?变得模块化,更快,跨平台且更易于   开始吧。否则你会去的,我想学习编码。   下载Visual Studio,然后在四个小时后编写hello world。

因此,网络团队开始了这一转变,对于网络而言,这使JavaScript Object Notation比扩展标记语言更好。但是,在Asp.Net团队进行这些修改的一年之内,Microsoft将其组织重组为一个.Net。他们意识到,这些更改不仅会涉及Asp.Net团队,而且还会涉及更多。较早的项目类型将不兼容或无法与JavaScript Object Notation一起使用,因此它们的.csproj和其他配置类型已转换回Extended Markup。但是许多开发人员确实很喜欢JavaScript Object Notation文件作为设置,它们更小,更清晰并且不那么冗长。因此,Microsoft通过Microsoft.Extensions.Configuration重新添加了该功能,以提供灵活性。

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

因此您可以利用两者之一。除了扩展标记之外,与JavaScript对象相比,读取和冗长的代码往往没有什么真正的好处。 JavaScript对象表示法往往更容易。