当前位置: 首页 > 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-思科认证网络支持工程师及薪金调查
  • 云计算大数据峰会小记
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JavaScript学习总结——原型
  • js操作时间(持续更新)
  • Linux下的乱码问题
  • MySQL QA
  • MySQL几个简单SQL的优化
  • PHP的Ev教程三(Periodic watcher)
  • SpringCloud集成分布式事务LCN (一)
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • zookeeper系列(七)实战分布式命名服务
  • 力扣(LeetCode)965
  • 前端攻城师
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 新书推荐|Windows黑客编程技术详解
  • 一天一个设计模式之JS实现——适配器模式
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • Nginx实现动静分离
  • ​虚拟化系列介绍(十)
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #android不同版本废弃api,新api。
  • #etcd#安装时出错
  • #LLM入门|Prompt#3.3_存储_Memory
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (poj1.3.2)1791(构造法模拟)
  • (pytorch进阶之路)扩散概率模型
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)计算机毕业设计大学生兼职系统
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (剑指Offer)面试题34:丑数
  • (七)理解angular中的module和injector,即依赖注入
  • (一)插入排序
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • ***监测系统的构建(chkrootkit )
  • .net 程序发生了一个不可捕获的异常
  • .net 获取url的方法
  • .NET 命令行参数包含应用程序路径吗?