建议在 .NET 核心中使用 app.config 和 ConfigurationManager 吗?

Posted

技术标签:

【中文标题】建议在 .NET 核心中使用 app.config 和 ConfigurationManager 吗?【英文标题】:Is using app.config and ConfigurationManager in .NET core advisable? 【发布时间】:2019-06-21 23:55:49 【问题描述】:

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

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

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

这是我的问题:

配置 .NET 核心应用程序的预期最佳实践是什么? 对 app.config 文件的支持仅是为了向后兼容而实现的,以便将遗留应用程序移植到 .NET Core 更容易,或者它被认为是一种最佳实践,并将在未来保持?李>

【问题讨论】:

【参考方案1】:

从历史上看,最初开始缩减 .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 对象表示法往往更容易。

【讨论】:

以上是关于建议在 .NET 核心中使用 app.config 和 ConfigurationManager 吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET 中访问 app.config

在 .Net Core 中使用 app.config

在没有 ConfigurationManager 和 Web.config 的情况下使用 PayPal .NET SDK

无法使用 ConfigurationManager 在 C# .NET Core 单元测试项目中读取 app.config

如何在 WPF 应用程序中使用 App.config 进行 log4net 配置

如何在我的 .NET App.Config 文件中存储 XML 值