1. Console Application
Create a new console application, add two Package:
Install-Package Microsoft.Extensions.Configuration Install-Package Microsoft.Extensions.Configuration.Json
1.1 single configuration file
Create a profile appsettings.json:
{ "Data": "10000", "ConnectionStrings": { "DevContext": "开发库", "ProdContext": "生产库" } }
Reads the configuration file:
using System; using System.IO; using Microsoft.Extensions.Configuration; namespace Libing.Core.ConsoleApp { class Program { static void Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json"); var config = builder.Build(); Console.WriteLine(config["Data"]); // Configure button Console.WriteLine (config.GetSection ( " the ConnectionStrings: DevContext " ) .Value); // hierarchical key } } }
ConfigurationRoot to create objects through ConfigurationBuilder object, reads the configuration file.
SetBasePath: set up a profile base path
AddJsonFile: Add read Json file
var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json");
Optional modify configuration files and automatically load the settings:
var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json");
Configuration key conventions:
(1) key is not case-sensitive. For example, ConnectionString connectionstring and are considered equivalent key.
(2) hierarchical key delimiter colon (:)
More than 1.2 profiles
AddJsonFile: Adding multiple profiles.
var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .AddJsonFile("appsettings.Development.json", optional: true, reloadOnChange: true);
{ "Data": "10000", "ConnectionStrings": { "DefaultContext": "默认库" } }
{ "Data": "10000", "ConnectionStrings": { "DefaultContext": "开发库" } }
using System; using System.IO; using Microsoft.Extensions.Configuration; namespace Libing.Core.ConsoleApp { class Program { static void Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .AddJsonFile("appsettings.Development.json"); var config =builder.Build (); Console.WriteLine (config.GetConnectionString ( " the DefaultContext " )); // Output: Development Library } } }
using System; using System.IO; using Microsoft.Extensions.Configuration; namespace Libing.Core.ConsoleApp { class Program { static void Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.Development.json") .AddJsonFile("appsettings.json"); var config =builder.Build (); Console.WriteLine (config.GetConnectionString ( " the DefaultContext " )); // Output: default library } } }
The same configuration key, select the file to read (AddJsonFile) added last.
To add a file to read the configuration information of all, you can traverse ConfigurationRoot the Providers property.
using System; using System.IO; using Microsoft.Extensions.Configuration; namespace Libing.Core.ConsoleApp { class Program { static void Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .AddJsonFile("appsettings.Development.json"); var config =builder.Build (); the foreach ( var Provider in config.Providers) { provider.TryGet ( " the ConnectionStrings: the DefaultContext " , OUT String DefaultContext); Console.WriteLine (DefaultContext); } // Output: default library // Development Library } } }