c# - 如何根据 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
?
解决方案
推荐阅读
- javascript - React.js 错误,未捕获(承诺中)错误:元素可能未呈现到 DOM
- javascript - For 循环仅适用于第一个元素
- python - 如何在python中使输出百分比
- microsoft-graph-api - 使用 microsoft graph 获取日历信息,无需创建应用注册
- java - 无法使用 uri http://www.springframework.org/tags/form 解析 taglib
- git - Jenkins 无法更新 GitHub 分支状态检查
- docker - NodePort 错误连接被拒绝(Docker 桌面、Windows、Kubernetes)
- html - 来自java spring的美化引导模板
- python - pyside6和pyqt5的区别
- ios - 如何使用 Firebase Cloud Functions 检索 iOS 设备令牌以通过 Firebase Cloud Messaging 发送推送通知?