.NET Core开发实战(第9课:命令行配置提供程序)--学习笔记

C# Web 开发:ASP.NET Core 从入门到实战 ASP.NET Core 是一个。 阅读详情

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

这一节讲解如何使用命令行参数来作为配置数据源

命令行配置(提供程序的)支持三种格式的命令

1、无前缀的 key=value 模式

2、双中横线模式 --key=value 或 --key value

3、正横杠模式 /key=value 或 /key value

备注:等号分隔符和空格分隔符不能混用

命令替换模式:为命令参数提供别名

1、必须以单横杠(-)或双横杠(--)开头

2、 映射字典不能包含重复 Key

首先引入三个包

Microsoft.Extensions.Configuration.Abstractions
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.CommandLine

主程序

namespace ConfigurationCommandLineDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder();

            // 把入参传递给命令行参提供程序
            builder.AddCommandLine(args);

            var configurationRoot = builder.Build();

            Console.WriteLine($"CommandLineKey1:{configurationRoot["CommandLineKey1"]}");
            Console.WriteLine($"CommandLineKey2:{configurationRoot["CommandLineKey2"]}");
            Console.ReadKey();
        }
    }
}

项目右键属性,设置调试模式启动时的命令参数

CommandLineKey1=value1 --CommandLineKey2=value2 /CommandLineKey3=value3 --k1=k3

也可以通过文件编辑,launchSettings.json

{
  "profiles": {
    "ConfigurationCommandLineDemo": {
      "commandName": "Project",
      "commandLineArgs": "CommandLineKey1=value1 --CommandLineKey2=value2 /CommandLineKey3=value3 --k1=k3"
    }
  }
}

启动程序,输出如下:

CommandLineKey1:value1
CommandLineKey2:value2

接着是命令替换

namespace ConfigurationCommandLineDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder();

            //// 把入参传递给命令行参提供程序
            //builder.AddCommandLine(args);

            #region 命令替换
            var mapper = new Dictionary<string, string> { { "-k1", "CommandLineKey1" } };
            builder.AddCommandLine(args, mapper);
            #endregion

            var configurationRoot = builder.Build();

            Console.WriteLine($"CommandLineKey1:{configurationRoot["CommandLineKey1"]}");
            Console.WriteLine($"CommandLineKey2:{configurationRoot["CommandLineKey2"]}");
            Console.ReadKey();
        }
    }
}

将双横杠 --k1=k3 改为 单横杠 -k1=k3

{
  "profiles": {
    "ConfigurationCommandLineDemo": {
      "commandName": "Project",
      "commandLineArgs": "CommandLineKey1=value1 --CommandLineKey2=value2 /CommandLineKey3=value3 -k1=k3"
    }
  }
}

启动程序,输出如下:

CommandLineKey1:k3
CommandLineKey2:value2

可以看出,-k1 替换了 CommandLineKey1 里面的值

这个场景是用来做什么的?

实际上可以看一下 .NET 自己的命令行工具

打开控制台,输入 dotnet --help

sdk-options:
  -d|--diagnostics  启用诊断输出。
  -h|--help         显示命令行帮助。
  --info            显示 .NET Core 信息。
  --list-runtimes   显示安装的运行时。
  --list-sdks       显示安装的 SDK。
  --version         显示使用中的 .NET Core SDK 版本。

这里可以看到 options 支持双横杠长命名和单横杠的短命名

实际上最典型的场景就是给应用的命令行参数提供了一个短命名快捷命名的方式,比如说 -h 就可以替换 --help

如何将 Serilog 集成到 ASP.NET Core 9 项目中进行日志管理 将Serilog集成到项目中非常简单,并且为应用程序提供了强大而灵活的日志记录功能。通过配置多个日志目标(控制台、文件、数据库等)、日志级别以及异步日志记录,你可以确保日志系统满足应用的需求,同时还能提高性能和可维护性。随着你对日志记录需求的增长,Serilog 提供了很多扩展选项,可以帮助你更好地管理日志。在开发中,正确配置日志系统不仅有助于监控和调试,还能帮助你在生产环境中及时发现并解决问题。 阅读详情

相关推荐

ASP.NET Core 中的文件提供程序

ASP.NET Core 通过文件提供程序来抽象化文件系统访问。在 ASP.NET Core 框架中使用文件提供程序。

Code365 1153

.Net Core 命令行界面(CLI)

.NET Core命令行界面 .NET Core命令行界面(CLI)是一个新的跨平台工具,用于创建,还原程序包,构建,运行和发布.NET应用程序。 在上一章中,我们使用Visual Studio创建了第一个ASP.NET Core Api 应用程序。Visual Studio在内部使用此CLI还原,生成和发布应用程序。其他更高级别的IDE,编辑器和工具都可以使用CLI支持.NET Core应用程序。 .NET Core CLI与.NET Core SDK一起安装在特定平台上。因此,我们不需要在开发机器

ananlele_的专栏 4800

使用.Net Core编写命令行工具(CLI)的方法

主要介绍了使用.Net Core编写命令行工具(CLI)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

.NET Core 命令大全

以上是.NET Core常用命令的简要介绍,这些命令覆盖了从项目创建、依赖管理、构建、运行、测试到发布等各个方面。通过熟练使用这些命令,开发者可以更高效地进行.NET Core项目的开发和管理。希望这篇文章能够帮助你更好地理解和使用.NET Core命令行工具。

AngelCryToo的专栏 1563

DDR4技术原理详解

DDR4是DDR4-SDRAM的简写,即第4代DDR-SDRAM,DDR-SDRAM全称Double Date Rate Synchronous Dynamic Random Access Memory。本文重点解析DDR4技术规范及其背后的电子电路原理,以及编程使用DDR4过程中需要注意的性能事项。

ctbinzi的专栏 1万+

GB 44497-2024《智能网联汽车 自动驾驶数据记录系统》标准解读

GB 44497-2024《智能网联汽车 自动驾驶数据记录系统》针对智能网联汽车的自动驾驶数据记录系统进行了全面规范。标准要求我们记录车辆在自动驾驶模式下的所有关键操作数据,如:1. 车辆状态数据,如速度、加速度、转向角度、制动状态等;2. 环境感知数据,如周围物体的位置、速度、类型等;3. 驾驶决策数据,如路径规划、避障决策、紧急制动指令等;4. 系统状态数据,如软件版本、硬件状态、系统警告信息等。在数据存储方面,标准强调了数据的安全性和可靠性。

daopuyun的博客 2666

使用.Net Core编写命令行工具(CLI)

使用.Net Core编写命令行工具(CLI)命令行工具(CLI)  命令行工具(CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。  通常认为,命令行工具(CLI)没有图形用户界面(GUI)那么方便用户操作。因为,命令行工具的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行工具...

zls365365的博客 711

Python实战:用nltk库5步搭建你的第一个n-gram文本生成器(附古诗生成案例)

本文详细介绍了如何使用Python的nltk库5步搭建n-gram文本生成器,并附有古诗生成案例。从环境准备、n-gram原理讲解到完整实现,逐步指导开发者掌握自然语言生成技术。特别针对中文古诗生成进行了优化,包括分词处理和韵律控制,帮助读者快速上手文本生成项目。

weixin_29090089的博客 202

什么是 .NET Core CLI,它有哪些常用命令? 什么是 .NET Core CLI,它有哪些常用命令?

.NET Core CLI 核心功能速览 .NET Core CLI 是跨平台开发工具集,支持项目全生命周期管理: 关键功能 项目创建:dotnet new支持生成控制台、Web API等多种模板 依赖管理:add/remove命令管理NuGet包和项目引用 构建运行: dotnet build支持多配置构建 dotnet run可带参数执行 测试部署: dotnet test支持测试筛选 dotnet publish支持单文件/AOT发布 典型工作流 dotnet new webapi -n MyApp

weixin_45422672的博客 837

flowable工作流源码解析-DB访问

Flowable用了mybatis组件,又实现了自己的command和interceptor机制。具体是怎么实现的呢? 我们以Deployment操作为例,来看看它的调用链 调用端是Service接口, 它委托自己的commandExecutor去执行具体的Command. Command最终会调用到EntityManager,然后委托给ibatis的sqlsession来完成操作。 其中CommandExcutor调用command的地方有些复杂,我们展开看: CommandExecutor会维护一系

coobee的博客 2482

ADS2020实战:村田电感.s2p与.mod文件导入全流程对比(附仿真结果差异分析)

本文详细对比了ADS2020中村田电感的.s2p与.mod文件导入流程及仿真结果差异,重点分析了两种模型在低频段和高频段的精度表现。通过实际案例展示.s2p文件在高频仿真中的优势,以及.mod文件在低频和非线性特性模拟中的准确性,为射频电路设计提供模型选择策略和混合仿真技巧。

weixin_29289821的博客 519

[ASP.NET Core开发实战]基础篇06 配置

配置,是应用程序很重要的组成部分,常常用于提供信息,像第三方应用登录钥匙、上传格式与大小限制等等。ASP.NET Core提供一系列配置提供程序读取配置文件或配置项信息。【示例代码下载】

极客神殿 445

基于决策树的英雄联盟比赛胜负预测(含完整代码)

在代码中设置随机种子(例如 RANDOM_SEED = 2024)的主要目的是为了确保每次运行代码时,随机过程的结果是一致的。通过绘制不同参数组合下的准确率图,直观地展示了参数对模型性能的影响,帮助读者更好地理解和选择合适的参数。通过设置相同的随机种子(伪随机数),可以确保每次运行代码时,随机数生成器生成的随机数序列是相同的。如果在开发过程中遇到问题,设置固定的随机种子可以帮助你更容易地定位问题,因为每次运行代码时的数据和结果都是一样的。在科学研究和实验中,结果的可重复性是非常重要的。

oisflo的博客 1919

ASP.NET Core - 配置系统之配置提供程序

软件应用根据不同的环境会有不同的行为逻辑,例如上面讲到的 appsettings.{environment}.json 根据环境而不同的配置文件,例如之前的 入口文件 文章中讲到的 Startup 文件根据不同环境的分离配置方式,而我们在代码中有时也会根据环境处理不同的逻辑,这时候我们可以注入 IHostEnvironment 服务,通过它获取当前应用的运行环境,入口文件中无论是 WebApplicationBuilder 对象还是 WebApplication 对象都包含该类型的属性。

weixin_37648525的博客 1483

Cadence OrCAD Capture软件启动过程卡死且无法恢复的解决方法

如下图所示Cadence OrCAD Capture软件在启动后出现卡死的现象,且等待后无法自动恢复,需要强行关闭,再次启动依然卡死。

fydar的博客 4042

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ASP.NET Core - 配置系统之自定义配置提供程序

在 .NET Core 配置系统中封装一个配置提供程序关键在于提供相应的 IconfigurationSource 实现和 IConfigurationProvider 接口实现,这两个接口在上一章ASP.NET Core - 配置系统之配置提供程序中也有提到了。

weixin_37648525的博客 1548

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

理解.NET Core中的配置Configuration

NET中的配置,本质上就是key-value键值对,并且key和value都是字符串类型。在.NET中提供了多种配置提供程序来对不同的配置进行读取、写入、重载等操作,这里我们以为.NET 的源码项目为例,来看下.NET中的配置主要是有那些类库。下面这个截图是.NET 源码中和配置相关的所有类库,所有配置相关的类库都是都是以Microsoft.Extensions.Configuration开头的。貌似很多,没关系我们来简单理解一下。类库名称类库作用。

曹瑞鹏的博客(专注于.NET开发,Unity开发) 1258

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ASP.NET Core - 配置系统之配置读取

一个应用要运行起来,往往需要读取很多的预设好的配置信息,根据约定好的信息或方式执行一定的行为。配置的本质就是软件运行的参数,在一个软件实现中需要的参数非常多,如果我们以 Hard Code (硬编码)的方式写在应用代码中,这样配置就会很乱,而且后续也不容易修改。乱而多,而且不容易修改,这就需要一个统一管理的地方,最常见的方式就是配置文件,这个也是开发人员非常熟悉的方式。通过配置文件设置好软件应用运行的各种参数之后,我们在开发过程中需要能够读取到配置文件的内容,根据配置内容进行软件逻辑的判断,实现完善的软件行

weixin_37648525的博客 2567

.NET Core中的配置Configuration实战

官方提供的配置提供程序基本上可以满足我们的绝大部分需求,但是如果我们的配置存储在注册表中、存储在数据库中,这个时候官方的配置提供程序就无法满足我们的要求,我们就需要自定义配置提供程序。自定义配置提供程序很简单,主要包括两个类:自定义配置源、自定义配置提供程序以及一个针对当前配置的扩展方法。下面代码,我们模拟一个基于数据库的配置提供程序,负责从数据库的配置表Config表中读取配置。当然案例代码,我们并不是真正的去读取数据库的表,大家可以自行完善代码。//自定义配置源//自定义配置提供程序。

曹瑞鹏的博客(专注于.NET开发,Unity开发) 661

.NET Core 配置系统

.NET Core提供了多种配置读取方式,包括JSON、INI、XML等文件格式,以及Azure Key Vault和Docker的Key-per-file格式。配置系统是开放的,支持第三方配置提供程序,如携程网开源的Apollo配置管理平台。通过Microsoft.Extensions.Configuration等NuGet包,可以轻松读取JSON配置文件,并使用ConfigurationBuilder和IConfigurationRoot进行配置管理。推荐使用选项方式读取配置,结合依赖注入机制,支持配置

nakedkai的博客 884

.NET Core开发实战(第10课:环境变量配置提供程序)--学习笔记

10 | 环境变量配置提供程序:容器环境下配置注入的最佳途径环境变量的配置提供程序主要适应场景:1、在 Docker 中运行时2、在 Kubernetes 中运行时3、需要设置 ASP....

dotNET跨平台 2245

.NET Core开发实战(第11课:文件配置提供程序)--学习笔记

11 | 文件配置提供程序:自由选择配置的格式文件配置提供程序Microsoft.Extensions.Configuration.IniMicrosoft.Extensions.Con...

dotNET跨平台 365
上一篇: [ASP.NET Core开发实战]基础篇06 配置
下一篇: C#的反射机制输出泛型类T及其内嵌List的属性值
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值