是否可以将 .Net Standard System.Configuration.ConfigurationManager.AppSettings 与 appSettings.json 文件一起使用

Is it possible to use .Net Standard System.Configuration.ConfigurationManager.AppSettings with an appSettings.json file

我希望能够构建 .Net 标准库,无论它们是从 Net Framework 还是 Net Core 应用程序调用的,它们都可以检索自己的配置信息。

System.Configuration.ConfigurationManager 已添加到网络标准。我已经证明我可以使用它从传统应用程序或 web.config 文件中提取,例如:

var value = ConfigurationManager.AppSettings["testString"];

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="testString" value="xxwx"/>
    <add key="testInt" value="234"/>
    <add key="testBool" value="true"/>
  </appSettings>
<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
</configuration>

我希望能够使用相同的代码从 appettings.json 文件中提取相同的值。类似于以下内容:

{
  "appSettings": [
    {
      "Key": "testString",
      "Value": "xxwx"
    },
    {
      "Key": "testInt",
      "Value": "234"
    },
    {
      "Key": "testBool",
      "Value": "true"
    }
  ]
}  

谁能告诉我使用 Net Standard 2.0 中的 System.Configuration 来读取 appSettings.json 文件是否可行?这里的真正目的是我不想让消费应用程序需要了解库的配置参数。我还希望能够使用来自 Net Framework 和 Net Core 应用程序的相同库。或者,有没有更好的方法来实现这一目标?

据我所知,该功能由 Microsoft.Extensions.Configurationwhich is compatible with .NETStandard 2.0 提供。

您可以在此处查看加载配置的示例:

var builder = new ConfigurationBuilder()
     .SetBasePath(Directory.GetCurrentDirectory())
     .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
     .AddJsonFile($"appsettings.{EnvironmentName}.json", optional: true, reloadOnChange: true)
     .AddEnvironmentVariables();
Configuration = builder.Build();

这将加载一个 appsettings.json 文件以及一个环境特定的应用程序设置文件(例如:appsettings.Production.json)。

要获取设置,您可以在 Microsoft Docs 中查看更多相关信息。