11 | 文件配置提供程序:自由选择配置的格式
文件配置提供程序
- 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中添加我们的配置源是有顺序关系的,后添加的配置会覆盖先添加的配置。
本文作者:hiwwwk
本文链接:https://www.cnblogs.com/wwwk/p/15873368.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步