.net core 文件配置提供程序 电脑版发表于:2020/6/19 14:03 ![.netcore](https://img.tnblog.net/arcimg/hb/c857299a86d84ee7b26d181a31e58234.jpg ".netcore") >#.net core 文件配置提供程序 [TOC] <br/> 相关程序包 ------------ <br/> - Microsoft.Extensions.Configuration.Ini - Microsoft.Extensions.Configuration.Json - Microsoft.Extensions.Configuration.NewtonsoftJson - Microsoft.Extensions.Configuration.Xml - Microsoft.Extensions.Configuration.UserSecrets <br/> 特性 ------------ <br/> - 指定文件可选、必选 - 指定是否监视文件的变更 <br/> 简单运用示例 ------------ <br/> >###项目结构 ![项目结构](https://img.tnblog.net/arcimg/hb/ce9d4056afbd4fd5bcf0a8288736a2ee.png "项目结构") >###项目代码 <br/> ><font style="color:#f1c40f;font-weight:bold;">appsetting.json</font> ```json { "Key1": "Value1", "Key2": "Value2", "Key5": false, "Key6": 10 } ``` ><font style="color:#7f8c8d;font-weight:bold;">appsetting.ini</font> ``` Key10=Value10 in ini ``` ><font style="color:#2ecc71;font-weight:bold;">Program.cs</font> ```csharp var builder = new ConfigurationBuilder(); builder.AddJsonFile("appsetting.json",optional:false,reloadOnChange:true); var configurationRoot = builder.Build(); Console.WriteLine($"Key1:{configurationRoot["Key1"]}"); Console.WriteLine($"Key2:{configurationRoot["Key2"]}"); Console.WriteLine($"Key3:{configurationRoot["Key3"]}"); Console.ReadKey(); Console.WriteLine($"Key1:{configurationRoot["Key1"]}"); Console.WriteLine($"Key2:{configurationRoot["Key2"]}"); Console.WriteLine($"Key3:{configurationRoot["Key3"]}"); Console.ReadKey(); ``` >AddJsonFile方法参数介绍 | 参数名称 | 参数详情 | | ------------ | ------------ | | path | 通过相对路径去读取配置文件。 | | optional | false:当文件不存在时报错 <br/> true:相反 | | reloadOnChange | true:文件发生更新时数据也发生改变 <br/> false:不关心文件的更新 | <br/> >###Json配置解析运行 <br/> >运行前部分 ![Json配置解析运行](https://img.tnblog.net/arcimg/hb/091cdee1de4c4683bfb551dced51ed1c.png) >修改<font style="color:#f1c40f;font-weight:bold;">appsetting.json</font>配置 ```json { "Key1": "Value1", "Key2": "Value2", "Key3": "Value3", "Key5": false, "Key6": 10 } ``` >运行后部分 ![运行后部分](https://img.tnblog.net/arcimg/hb/21712c0bbe69457cbc59c65595713f69.png) <br/> > 当 **reloadOnChange** 为 **true** 的时候我们发现中途数据发生改变也会进行数据的更新 <br/> >###Ini配置解析运行 <br/> >完整代码如下: ```csharp var builder = new ConfigurationBuilder(); builder.AddJsonFile("appsetting.json",optional:false,reloadO builder.AddIniFile("appsetting.ini",optional:false,reloadOnC var configurationRoot = builder.Build(); Console.WriteLine($"Key1:{configurationRoot["Key1"]}"); Console.WriteLine($"Key2:{configurationRoot["Key2"]}"); Console.WriteLine($"Key3:{configurationRoot["Key3"]}"); Console.ReadKey(); Console.WriteLine($"Key1:{configurationRoot["Key1"]}"); Console.WriteLine($"Key2:{configurationRoot["Key2"]}"); Console.WriteLine($"Key3:{configurationRoot["Key3"]}"); Console.WriteLine($"Key10:{configurationRoot["Key10"]}"); Console.ReadKey(); ``` >运行结果 ![运行结果](https://img.tnblog.net/arcimg/hb/d5cf9c95d306477ebf3e8c1258fa021b.png) >###注意 <br/> >靠后的配置文件会覆盖之前存在的配置信息