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"

 

posted @ 2021-07-23 16:34  microsoft-zhcn  阅读(745)  评论(0编辑  收藏  举报