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

时间:2018-03-09 15:58:31

标签: appsettings .net-standard-2.0 system.configuration

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

System.Configuration.ConfigurationManager已添加到Net Standard。我已经证明我可以使用它从传统的app或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应用程序中的相同库。或者,是否有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

据我所知,该功能由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

中查看有关该设置的更多信息