Microsoft.Extensions.CommandLineUtils 使用总结
今天给大家介绍微软的命令行工具: CommandLineUtils,用它可以快速开发专业的命令行程序。这个包在Nuget上可以下载:
Microsoft.Extensions.CommandLineUtils
它本是微软给.net core准备的,依赖于.net standard库。
对于.net 用户的,使用.net framework库。
McMaster.Extensions.CommandLineUtils
var app = new CommandLineApplication();
app:命令名称
app.Description = "命令测试";
Description:命令描述
app.HelpOption("-h|--help")
HelpOption:设置含有帮助选项,触发方式为 –h 或者 —help,这边用 | 分隔。
app.Argument("path", "file")
Argument:设置一个参数,参数名为 path,描述为file。还可以设置参数是否允许多个等。
app.Option
Option:设置了两个选项,选项的触发方式与HelpOption一致,后面一个参数是说明。还可以配置这个参数是否有值(是否只是开关),是否只有一个值,是否允许多个值等。
app.OnExecute
OnExecute:命令的具体执行逻辑。
app.Execute
Execute:与主程序对接,真正的执行者。
Console.WriteLine("输出结果");
示例一:主命令(程序)接收参数
static void Main(string[] args) { var app = new CommandLineApplication(); //输入 -h 显示所以参数规格 app.HelpOption("-h | --help"); //输入 -i 提交 id 参数 var optionID = app.Option("-i|--id <ID>", "内容ID", CommandOptionType.SingleValue); //输入 -t 提交 title 参数 var optionTitle = app.Option("-t|--title <TITLE>", "内容标题", CommandOptionType.SingleValue); app.OnExecute(() => { //获取 id 参数值 var id = optionID.Value(); //获取 title 参数值 var title = optionTitle.Value(); Console.WriteLine($"内容ID: {id}"); Console.WriteLine($"内容标题: {title}"); return 0; }); app.Execute(args); }
示例调用:-i 100 -t "hello"
CMD调用:app.exe -i 100 -t "hello"
示例二:子命令接收参数
static void Main(string[] args) { var app = new CommandLineApplication(); app.HelpOption("-h|--help"); app.OnExecute(() => { app.ShowHelp(); return 0; }); app.Command("update", command => { var optionID = command.Option("-i|--id <ID>", "内容ID", CommandOptionType.SingleValue); var optionTitle = command.Option("-t|--title <TITLE>", "内容标题", CommandOptionType.SingleValue); command.OnExecute(() => { var id = optionID.Value(); var title = optionTitle.Value(); Console.WriteLine($"内容ID: {id}"); Console.WriteLine($"内容标题: {title}"); return 0; }); }); app.Execute(args); }
示例调用:update -i 100 -t "hello"
CMD调用:app.exe -i 100 -t "hello"