I would like to be able to build .Net Standard libraries that can retrieve their own configuration information whether they are called from a Net Framework or a Net Core application.
System.Configuration.ConfigurationManager has been added to Net Standard. I have proven that I can use this to pull from a traditional app or web.config file such as this:
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>
I would like to be able to pull the same value using the same code from an appettings.json file. Something like the following:
{
"appSettings": [
{
"Key": "testString",
"Value": "xxwx"
},
{
"Key": "testInt",
"Value": "234"
},
{
"Key": "testBool",
"Value": "true"
}
]
}
Can someone tell me if this is possible using System.Configuration from Net Standard 2.0 to read an appSettings.json file? The real purpose here is that I do not want to have consuming applications have a need to understand configuration parameters of libraries. I also want to be able to use the same libraries from Net Framework and Net Core applications. Alternatively, is there a better way to achieve this?
To the best of my knowledge, that functionality is provided by Microsoft.Extensions.Configuration, which is compatible with .NETStandard 2.0.
You can see an example of loading the configuration here:
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();
This will load an appsettings.json file as well as an environment specific app settings file (ex: appsettings.Production.json).
To get the settings, you can see more about it in the Microsoft Docs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With