Можно ли использовать.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.