Можно ли использовать.Net Standard System.Configuration.ConfigurationManager.AppSettings с файлом appSettings.json

Я хотел бы иметь возможность создавать библиотеки.Net Standard, которые могут извлекать информацию о своей конфигурации независимо от того, вызываются они из Net Framework или из приложения Net Core.

System.Configuration.ConfigurationManager был добавлен в Net Standard. Я доказал, что могу использовать это для извлечения из традиционного приложения или файла 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"
    }
  ]
}  

Может кто-нибудь сказать мне, если это возможно, используя System.Configuration из Net Standard 2.0 для чтения файла appSettings.json? Настоящая цель здесь заключается в том, что я не хочу, чтобы приложения-потребители нуждались в понимании параметров конфигурации библиотек. Я также хочу иметь возможность использовать те же библиотеки из приложений Net Framework и Net Core. В качестве альтернативы, есть ли лучший способ достичь этого?

1 ответ

Решение

Насколько мне известно, эта функциональность обеспечивается Microsoft.Extensions.Configuration, который совместим с.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.

Другие вопросы по тегам