11 | 文件配置提供程序:自由选择配置的格式

文件配置提供程序

  • Microsoft.Extensions.Configuration.Ini
  • Microsoft.Extensions.Configuration.Json
  • Microsoft.Extensions.Configuration.NewtonsoftJson
  • Microsoft.Extensions.Configuration.Xml
  • Microsoft.Extensions.Configuration.UserSecrets

特性

  • 指定文件是否可选、必选
  • 指定是否监视文件的变更,也就意味着如果文件变更我们是可以知道的

示例

新建控制台应用程序👉添加包
image.png
添加一个appsetting.json文件在项目中
image.pngimage.png
将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"]}");
        }
    }
}

输出:image.png

AddJsonFile()方法由其它两个参数,optionalreloadOnChange
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文件,将Key1Value1修改为NewValue1,然后保存。
image.png
输出:image.png

然后我们再看一看ini文件的操作
首先创建一个appsetting.ini操作同上 ,输入内容:
image.png
将代码修改为

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(); 
        }
    }
}

输出:image.png

我们发现Key3输出的是ini文件的值,说明Builder中添加我们的配置源是有顺序关系的,后添加的配置会覆盖先添加的配置

推荐这些文章:

第一个控制台程序,基本格式

// WC1.cpp : Defines the entry point for the console application.//
#include "stdafx.h"#include <iostream> //输入输出库
//using namespace std;
int _tmain(int argc, _TCHAR* argv[]){ { using namespace std; //命名空间,作用域在大括号内,使用标准库 cout<<"hello world!\n"<<endl;  } s...

12 | 配置变更监听:配置热更新能力的核心

场景

需要记录配置源的变更时
需要在配置数据变更时触发特定操作时

当我们需要追踪我们的配置发生变化时,在配置发生变化时我们需要执行一些特定的操作的时候,这个时候就需要我们来进行一定的编码,来跟踪我们配置的变化
关键方法

IChangeToken IConfiguration.GetReloadToken()

示例
使用上一篇笔记创建的控制台应用程序,将代码修改为:
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Primitives;
using System;

namespace Confi...

乘风破浪,遇见最美Windows 11之新微软商店(Microsoft Store)生态 - 移植并发布Microsoft Edge扩展

什么是Microsoft Edge扩展

https://docs.microsoft.com/zh-cn/microsoft-edge/extensions-chromium/

Microsoft Edge扩展是一个小程序,开发人员添加或修改Microsoft Edge(Chromium)。扩展旨在改善用户的日常浏览体验。它提供了对目标受众很重要的功能。

如果你有基于Microsoft Edge浏览器或特定网页功能的改进的想法或产品,可以创建一个扩展。配套体验的示例包括广告阻止者和密码管理器。
扩展的结构类似于常规Web应用。扩展应至少包含以下功能:

包含基本平台信息的应用程序清单J...

乘风破浪,遇见最美Windows 11之新微软商店(Microsoft Store)生态 - Microsoft Edge扩展上架锦囊

一、概述

Microsoft Edge是一款快速而安全的浏览器,可帮助您保护数据,节省时间和金钱。

浏览器作为互联网居民通向世界的一道门,一直是兵家必争之地,前有IE一统江湖,后有Google以Chrome新秀反超昔日霸主,登顶今日桌面第一浏览器宝座。
然而经过Microsoft Edge(经典版)历练的微软骤然觉醒,基于Chrome的开源方案Chromium内核重制了Microsoft Edge浏览器,基于开源社区已有的精华和Windows系统原生视角的思考,重整旗鼓,改头换面,自我革新,想用户之所想,做用户之所需,最终赢得广大用户的好口碑。
微软为了让更...

10 | 环境变量配置提供程序:容器环境下配置注入的最佳途径

适用场景

在Docker中运行时
在Kubernetes中运行时
需要设置ASP.NET Core的一些内置特殊配置时

我们当时一个操作系统会跑多个应用程序,应用程序注入配置的方式一般都是通过文件或者说是命令行的方式来注入的。现在在容器化的环境下面,有了Docker的隔离能力,就意味着每一个应用程序都相当于跑在一个小型的操作系统下面一样,所以说这个时候Docker提供的环境隔离能力,让我们可以使用环境变量来配置我们的引用程序。

特点

对于配置的分层键,支持用双下划线“_”代替“:”

比如Linux下面,冒号作为环境变量的key值时不行的。

支持根据前缀加载

示例
新建控制台...

09 | 命令行配置提供程序:最简单快捷的配置注入方法

支持的命令格式

无前缀的 **key=value** 模式
双中横线模式 **--key==value** 或 **--key value**
正斜杠模式 **/key=value**** **或 **/key value**

备注: 等号分隔符和空格分隔符不能混用
命令替换模式
这个模式是指我们可以给我们的命名参数提供别名

必须以(-)单划线或双花线(--)开头
映射字典不能包含重复的Key

新建控制台应用程序👉添加包

using Microsoft.Extensions.Configuration;
using System;

namespace Configuration...

Apollo 配置的值为json格式,.net core 里能获取到吗

问题

使用Configuration.GetSection("ConsulDiscovery").Get<ConsulDiscoveryOption>();获取不到这个对象
public class ConsulDiscoveryOption
{
/// <summary>
/// 站点的端口,还有服务发现之后健康检查的端口
/// </summary>
public int Port { get; set; }
/// <summary>
/// 服务名称
/// </summary>
...

C# 添加一个具有自定义命名空间和相同类名的静态类:Console

using CLRConsole = System.Console;

namespace ExtensionMethodsDemo
{
public static class Console
{
public static void WriteLine(string value)
{
CLRConsole.WriteLine(value);
}

public static void WriteBlueLine(string value)
{
S...

在虚拟机、Mac 电脑和旧电脑上绕过 TPM 安装 Windows 11 的方法总结(提供通用无 TPM 检测镜像下载)

Windows 11 绕过 TPM 方法总结,通用无 TPM 镜像下载
请访问原文链接:https://sysin.cn/blog/windows-11-no-tpm/,查看最新版。原创作品,转载请保留出处。
作者:gc(at)sysin.org,主页:www.sysin.org
本文要解决的问题:

如何安装 Windows 11 虚拟机绕过 TPM 检测,Widows 11 ISO 虚机直装镜像下载。
如何在 Mac 上安装 Windows 11,Windows 11 for Mac Boot Camp 直装版 ISO 下载。
如何在没有 TPM 或者没有 TPM 2.0 的 PC 安装...

13 | 配置绑定:使用强类型对象承载配置数据

要点

支持将配置值绑定到已有对象
支持将配置值绑定到私有属性上

默认情况下我们只能绑定public的

示例
继续沿用我们上一次创建的控制台应用程序,新添加一个包Microsoft.Extensions.Configuration.Binder首先我们新建一个类,来作为我们接受配置的实例
class Config
{
public string Key1 { get; set; }
public string Key2 { get; set; }
public bool Key3 { get; set; }
public int Key4 { get;...

文章标题:11 | 文件配置提供程序:自由选择配置的格式
文章链接:https://www.dianjilingqu.com/50973.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>