Microsoft.Extensions.Configuration 究竟如何依赖于 ASP.NET Core?



ASP.NET 核心是否实现了对配置值的IConfiguration访问?

很可能我的问题出现是因为我不明白 Core 到底是什么 ASP.NET。好吧,我知道它是一个 Web 框架,不确定,但看起来它是 .NET 中的一个命名空间,或者一个包......我知道在 php 中,框架可以是一组类(命名空间(或作为扩展提供的编译库,因此我假设在 .NET 中使用类似的方法。

最初,我还没有打算把我的头缠绕在 ASP.NET 核心上。我需要为我的简单控制台 C# 应用程序(VS Code 和 .NET Core(存储一些配置。我找到了很多主题(例如:如何在控制台应用程序中从config.json读取值(来读取JSON(推荐(配置。鉴于此,我添加了三个必要的金块包:

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.FileExtensions;
using Microsoft.Extensions.Configuration.Json;

我需要使用:

new ConfigurationBuilder()          
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json").Build();

这将返回实现IConfigurationRoot/IConfiguration接口的对象。但所有的例子都是在 ASP.NET 核心背景下给出的。我有一个非常简单的应用程序,我还不需要 ASP.NET 任何功能。

所以我试图在没有 ASP.NET 的情况下访问IConfigurationRoot。生成的对象存储配置文件中的值,但没有其接口的所有方法来访问它们。

如何在 .NET 命名空间的上下文中解释这一点?ASP.NET Core 是否实现了从IConfiguration(如Get<T>()(访问值的方法?

如果Microsoft.Extensions.ConfigurationMicrosoft.AspNetCore.App的一部分或严重依赖于,为什么它在不同的命名空间中?

如果我添加 ASP.NET 核心(NuGet 包和命名空间(,会不会矫枉过正?

也许我应该使用ConfigurationBuilder以外的 soemthing 来阅读 JSON?

Microsoft.Extensions.ConfigurationMicrosoft.Extensions命名空间中的其他包(例如 Options,或 DependencyInjection(一样,是作为 ASP.NET Core 框架的一部分创建的包。然而 ASP.NET Core及其所有相关软件包的构建方式是非常模块化的,因此所有库都可以在 ASP.NET Core上下文中使用,也可以在没有使用。

您必须将这些包理解为库。它们包含在 ASP.NET Core中,因为框架建立在它们之上,但是如果您不需要 ASP.NET Core Web框架,您仍然可以单独使用这些库,而无需提及 ASP.NET Core。这就是为什么它们位于Microsoft.Extensions命名空间而不是Microsoft.AspNetCore中的原因:它们是完全独立的项目。当然,这些包的开发是由 ASP.NET 核心团队完成的,ASP.NET 核心的设计决策确实会影响这些扩展包的发展方式;但是团队对这些软件包非常小心,以免影响一般使用。

综上所述,您如何使用这些软件包?就像任何其他库一样,只需添加对它的 NuGet 引用。由于Microsoft.Extensions.Configuration基础库,它没有任何加载文件的工具,因此如果要加载JSON文件,还需要Microsoft.Extensions.Configuration.Json

但接下来它真的很直截了当:

var configuration = new ConfigurationBuilder()
.AddJsonFile("config.json")
.Build();
// retrieve configuration values
Console.WriteLine(configuration["foo"]); // bar
Console.WriteLine(configuration["baz:bar"]); // qux

对于此示例,config.json如下所示:

{
"foo": "bar",
"baz": {
"bar": "qux"
}
}

因此,您可以像这样加载配置。不过,请务必仍然检查文档。它可能与 Core 内部使用的配置有关 ASP.NET 但基本概念仍然适用(例如,配置路径的外观或绑定的工作原理(。

最后,请注意,这实际上仅用于配置。从 JSON 加载数据只是您可以使用Microsoft.Extensions.Configuration的众多配置源之一。但是,无论您将使用哪个提供程序,您最终都会得到具有部分和关键路径概念的相同配置格式。

如果您在查看如何解析 JSON 时来到包,那么很可能您正在寻找错误的工具。如果要解析 JSON 以检索正确的数据结构,就像使用 JSON 作为序列化数据的方式一样,那么您应该查看其他内容。解析JSON(也是序列化(最常见的解决方案是使用 Json.NET,这是一个非常强大和灵活的工具来处理任何类型的JSON数据。

相关内容

  • 没有找到相关文章

最新更新