1. 控制台应用
新建一个控制台应用,添加两个Package:
Install-Package Microsoft.Extensions.Configuration Install-Package Microsoft.Extensions.Configuration.Json
1.1 单个配置文件
创建配置文件appsettings.json:
{ "Data": "10000", "ConnectionStrings": { "DevContext": "开发库", "ProdContext": "生产库" } }
读取配置文件:
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"]); // 配置键 Console.WriteLine(config.GetSection("ConnectionStrings:DevContext").Value); // 分层键 } } }
通过ConfigurationBuilder对象来创建ConfigurationRoot对象,进行读取配置文件。
SetBasePath:设置配置文件基础路径
AddJsonFile:添加读取的Json文件
var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json");
配置文件可选及修改自动加载设置:
var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json");
配置键约定:
(1)键不区分大小写。 例如,ConnectionString 和 connectionstring 被视为等效键。
(2)分层键使用冒号分隔符 (:)
1.2 多个配置文件
AddJsonFile:添加多个配置文件。
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("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.Development.json") .AddJsonFile("appsettings.json"); var config = builder.Build(); Console.WriteLine(config.GetConnectionString("DefaultContext")); // 输出:默认库 } } }
配置键相同时,读取选择最后一个添加的文件(AddJsonFile)。
若要读取所有添加文件的配置信息,可遍历ConfigurationRoot的Providers属性。
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(); foreach (var provider in config.Providers) { provider.TryGet("ConnectionStrings:DefaultContext", out string defaultContext); Console.WriteLine(defaultContext); } // 输出:默认库 // 开发库 } } }