首页 > 其他分享 >看看《System.CommandLine》

看看《System.CommandLine》

时间:2022-12-06 01:55:25浏览次数:35  
标签:show 看看 sub1Command CommandLine System rootCommand 命令

  记得之前出过几篇.net tool工具的文章,当时的做法是所有工具的语法分析全部自己解释,自己执行,语法的解释占了大部分时间,反而工具的功能被弱化了。

  其实微软有一个CommandLine框架在缓慢的发展着,至今都没有正式发布,那就是System.CommandLine。可以通过NuGet来引用System.CommandLine,它的github地址是https://github.com/dotnet/command-line-api。它的学习文档可参考https://docs.microsoft.com/zh-cn/dotnet/standard/commandline/。按照微软的建议,这个库还在发展中,有可能有较大的改变,所以不建议生产。但这些不耽误我们学习理解他的思路。

  先看一小段代码,开始对CommandLine命令的认识

 //根命令
    var rootCommand = new RootCommand("这是一个命令行工具:旦猫");
    rootCommand.SetHandler(() =>
    {
        Console.WriteLine("欢迎使用《旦猫》");
    });
    //字命令,可以添加到根命令下面
    var sub1Command = new Command("show", "显示一些信息");
    rootCommand.Add(sub1Command);
    sub1Command.SetHandler(() =>
    {
        Console.WriteLine("这是《旦猫》的show命令");
    });
    //开始执行命令
    await rootCommand.InvokeAsync(args);

  可以通过右键项目文件,“通过终端打开”,在终端上输入dotnet run命令来测试自己的命令行工具。

  这里有根命令,并设置了命令执行的内容是控制台上输出欢迎语。

  还有一个子命令show,同样输出不同的欢迎语。

  如果输入不存的命令,会有帮助信息。

 

   并且自带了版本和帮助,帮助是需要自定义的,版本就简单了,如果项目信息是这样的

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <Version>1.0.0.2</Version>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="System.CommandLine" Version="2.0.0-beta3.22114.1" />
  </ItemGroup>
</Project>

  结果会自动提取版本号过来,为我们节省了这块一发的时间

 

   关于System.CommandLine的介绍,后篇分享。

  想要更快更方便的了解相关知识,可以关注微信公众号 

 

 

标签:show,看看,sub1Command,CommandLine,System,rootCommand,命令
From: https://www.cnblogs.com/ljknlb/p/16954078.html

相关文章

  • System.CommandLine选项Option
    前一篇简单看了一下CommandLine命令的使用,其实在一个命令行工具中,还有一个重要的点,那就是选项——Option,选项是为命提供参数,就好像C#中方法,Command就像方法,Option就像......
  • started to fail (cannot connect to [[192.168.2.1]:10051]: [4] Interrupted system
    52340:20221025:160139.474activecheckconfigurationupdatefrom[192.168.2.1:10051]startedtofail(cannotconnectto[[192.168.2.1]:10051]:[4]Interrupted......
  • 看看.net core中的WCF
    .netcore下迎来了WCF——CoreWCF1.0,做了一个最初级的Demo,尝尝鲜。首先在NuGet中引入下面两个包CoreWCF.Http CoreWCF.Primitives本demo是用WCF实现一个ToDoLi......
  • 看看.net core中的WCF
    .netcore下迎来了WCF——CoreWCF1.0,做了一个最初级的Demo,尝尝鲜。首先在NuGet中引入下面两个包CoreWCF.Http CoreWCF.Primitives本demo是用WCF实现一......
  • Winform程序打包工具NSIS(Nullsoft Scriptable Install System)
    NSIS(NullsoftScriptableInstallSystem)是一个开源的Windows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样,NSIS......
  • Control of Mobile Robots 学习笔记(二、三)Mobile robot, Linear system
    《Controlofmobilerobot》是Gatech的Dr.MagnusEgerstedt在Coursera上发布的一个公开课(现在好像没在Coursera了,这位老师也不在Gatech了)。之前没有自主移动机器人方面......
  • 【五期邹昱夫】USENIX Security(USENIX Security'21)Systematic Evaluation of Privacy
    The30thUSENIXSecuritySymposium.  本文贡献主要有两部分,一是提出一种基于修改预测熵的新成员推理攻击方法。二是定义了一个称为隐私风险分数的指标,用来估计每......
  • C#命令行参数解析库System.CommandLine介绍
    命令行参数平常在日常的开发过程中,会经常用到命令行工具。如cmd下的各种命令。以下为sc命令执行后的截图,可以看到,由于没有输入任何附带参数,所以程序并未执行任何操作,只......
  • 使用systemctl启动kafka
    kafka依赖于zookeeper1.新建zookeeper配置文件:​​vim ​​​​/etc/systemd/system/zookeeper​​​​.service​​​​[Unit]​​​​Description=ApacheZookeeperserv......
  • 代码绑核后调用system占用CPU分析
    一system函数分析1.函数原型:intsystem(constchar*command)参数command一般是一条可被/bin/sh-c执行的字符串,可以是"ls-l"这样的shell命令,也可以是"./Test"这样的二进......