当前位置: 首页 > news >正文

.NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions

.NET Core 控制台程序没有 ASP.NET Core 的 IWebHostBuilder 与 Startup.cs ,那要读 appsettings.json、注依赖、配日志、设 IOptions 该怎么办呢?因为这些操作与 ASP.NET Core 无依赖,所以可以自己动手,轻松搞定。

1、读 appsettings.json ,ConfigurationBuilder 上

var conf = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", true, true)
    .AddJsonFile("appsettings.Development.json", true, true)
    .Build();

需要安装 nuget 包 Microsoft.Extensions.Configuration 、Microsoft.Extensions.Configuration.FileExtensions 、Microsoft.Extensions.Configuration.Json

2、注依赖,IServiceCollection + IServiceProvider 一起来

IServiceCollection services = new ServiceCollection();
//...
services.AddSingleton<CosClient>();
IServiceProvider serviceProvider = services.BuildServiceProvider();
var cosClient = serviceProvider.GetService<CosClient>();

需要安装 nuget 包 Microsoft.Extensions.DependencyInjection 

3、配日志, AddLogging 与 ILoggingBuilder 肩并肩

services.AddLogging(builder => builder    
    .AddConfiguration(conf.GetSection("Logging"))
    .AddConsole());

需要安装 nuget 包 Microsoft.Extensions.Logging 、Microsoft.Extensions.Logging.Configuration 、Microsoft.Extensions.Logging.Console

4、设IOptions,AddOptions() 与 Configure<T> 齐步走

services.AddOptions();
services.Configure<CosClientOptions>(conf.GetSection("cosClient"));

需要安装 nuget 包 Microsoft.Extensions.Options 与 Microsoft.Extensions.Options.ConfigurationExtensions

完整代码:

class Program
{
    static async Task Main(string[] args)
    {
        var conf = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", true, true)
            .AddJsonFile("appsettings.Development.json", true, true)
            .Build();

        IServiceCollection services = new ServiceCollection();
        services.AddLogging(builder => builder
            .AddConfiguration(conf.GetSection("Logging"))
            .AddConsole());
        services.AddOptions();
        services.Configure<CosClientOptions>(conf.GetSection("cosClient"));
        services.AddSingleton<CosClient>();

        IServiceProvider serviceProvider = services.BuildServiceProvider();
        var cosClient = serviceProvider.GetService<CosClient>();
    }
}

转载于:https://www.cnblogs.com/dudu/p/7803086.html

相关文章:

  • 如何使用R-Studio恢复被格式化分区内的数据
  • python字符串
  • 组策略脚本集
  • haproxy 配置详解
  • iostat相关参数说明——await:平均每次设备I/O操作的等待时间 (毫秒),如果%util接近 100%,说明产生的I/O请求太多...
  • 用路由器来防范网络中的恶意攻击
  • k3用户管理提示“新事务不能登记到指定的事务服务器”?
  • SQL Server 数据库文件管理
  • 利用stat命令获取Linux文件系统和文件的详细状态信息
  • 如何改变ISA或WSUS在任务栏图标的运行状态(经验分享)
  • 编译安装mysql时报缺少boost1.59后,编译安装boost1.59
  • MFC控件指针公用释放方法[void* | 指针的引用]
  • eclipse设置代码提示
  • CCNA-思科认证网络支持工程师及薪金调查
  • 云计算大数据峰会小记
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 5、React组件事件详解
  • AngularJS指令开发(1)——参数详解
  • Django 博客开发教程 16 - 统计文章阅读量
  • python 装饰器(一)
  • Service Worker
  • SQLServer插入数据
  • SQLServer之索引简介
  • Web Storage相关
  • 初探 Vue 生命周期和钩子函数
  • 翻译--Thinking in React
  • 后端_MYSQL
  • 开发基于以太坊智能合约的DApp
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 深度学习入门:10门免费线上课程推荐
  • 应用生命周期终极 DevOps 工具包
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • #Lua:Lua调用C++生成的DLL库
  • #pragma data_seg 共享数据区(转)
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (09)Hive——CTE 公共表达式
  • (1)SpringCloud 整合Python
  • (11)MSP430F5529 定时器B
  • (6)STL算法之转换
  • (C#)一个最简单的链表类
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (十六)串口UART
  • (图)IntelliTrace Tools 跟踪云端程序
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)为什么要选择C++
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 发展历程
  • .net(C#)中String.Format如何使用
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • ??如何把JavaScript脚本中的参数传到java代码段中