文件配置提供程序
- Microsoft.Extensions.Configuration.Ini
- Microsoft.Extensions.Configuration.Json
- Microsoft.Extensions.Configuration.NewtonsoftJson
- Microsoft.Extensions.Configuration.Xml
- Microsoft.Extensions.Configuration.UserSecrets
特性
- 指定文件是否可选、必选
- 指定是否监视文件的变更,也就意味着如果文件变更我们是可以知道的
示例
新建控制台应用程序👉添加包
添加一个appsetting.json文件在项目中

将json文件设置为:右键👉属性👉复制到输出目录:始终复制
using Microsoft.Extensions.Configuration;using System;namespace ConfigurationFileDemo{class Program{static void Main(string[] args){var builder = new ConfigurationBuilder();var root = builder.AddJsonFile("appsettings.json").Build();Console.WriteLine($"Key1 : {root["key1"]}");Console.WriteLine($"Key2 : {root["key2"]}");}}}
输出:
**AddJsonFile()**方法由其它两个参数,**optional**和**reloadOnChange****optional参数默认是false,功能是当文件不存在时是否报错。****reloadOnChange**``**参数默认是true,功能是每次我们文件变更了,它会去读取我们新的文件。**
这里,我们
将代码修改为:
using Microsoft.Extensions.Configuration;using System;namespace ConfigurationFileDemo{class Program{static void Main(string[] args){var builder = new ConfigurationBuilder();var root = builder.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true).Build();Console.WriteLine($"Key1 : {root["key1"]}");Console.WriteLine($"Key2 : {root["key2"]}");Console.ReadKey();Console.WriteLine($"Key1 : {root["key1"]}");Console.WriteLine($"Key2 : {root["key2"]}");Console.ReadKey();}}}
然后运行,代码会在ReadKey()处停住,之后我们去修改Json文件,将Key1的Value1修改为NewValue1,然后保存。
输出:
然后我们再看一看ini文件的操作
首先创建一个appsetting.ini操作同上 ,输入内容:
将代码修改为
using Microsoft.Extensions.Configuration;using System;namespace ConfigurationFileDemo{class Program{static void Main(string[] args){var builder = new ConfigurationBuilder();var root = builder.AddJsonFile("appsettings.json").AddIniFile("appsettings.ini").Build();Console.WriteLine($"Key1 : {root["key1"]}");Console.WriteLine($"Key2 : {root["key2"]}");Console.WriteLine($"Key3 : {root["key3"]}");Console.ReadKey();}}}
输出:
我们发现Key3输出的是ini文件的值,说明Builder中添加我们的配置源是有顺序关系的,后添加的配置会覆盖先添加的配置。
