看看《System.CommandLine》

本文介绍了微软的System.CommandLine库,这是一个用于命令行解析的框架,可以通过NuGet获取。虽然官方建议不用于生产环境,但适合学习。示例代码展示了如何创建根命令和子命令,并执行相应操作。文章还提到了通过项目信息自动获取版本号的功能,并预告了后续分享更多相关内容。
摘要由CSDN通过智能技术生成

记得之前出过几篇.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,同样输出不同的欢迎语。

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

7947f03df88fa005b1d92039c189e675.png

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

<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>

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

53cf51bfb2112a61edcd20511677a40a.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值