首页 > 解决方案 > 如何根据 CommandLineUtils 运行时设置配置 DI 容器?

问题描述

我正在将命令行应用程序迁移到使用https://github.com/natemcmaster/CommandLineUtils进行命令行处理(以前称为Microsoft.Extensions.CommandLineUtils)。它进展顺利(尽管该库非常固执己见)但我正在努力处理会影响我注入容器的内容/方式的选项 - 即如何配置记录器。

由于这是一个dotnet全局工具,我试图非常密切地遵循命令行的功能,就选项而言。

我有这个CommandBase

[Option(CommandOptionType.SingleValue,
  ShortName = "v", LongName = "verbosity",
  Description = "Sets the verbosity level of the command. Allowed values are quiet, minimal, normal, detailed.")]
protected LogLevel Verbosity { get; } = LogLevel.Normal;

现在,以前,我会先解析命令行,然后基于此构建我的容器,然后启动命令运行。

// settings coming from old parsing logic
var container = ContainerRegistration.Init(settings);
var app = new CommandLineApplication<Program> {ThrowOnUnexpectedArgument = false};
app.Conventions.UseDefaultConventions().UseConstructorInjection(container);
return app.Execute(args);

对于大多数事情,我可以反转它(如CommandLineUtils预期的那样 - 所以首先构建 IoC 容器,然后.Execute调用并解析命令行),但我不知道如何配置日志记录。

任何想法如何根据CommandLineUtils解析结果注册 IoC 对象?或执行此操作的应用程序示例dotnet

标签: c#.net-corecommand-line-argumentscommandlineutils

解决方案


推荐阅读