看看《System.CommandLine》
记得之前出过几篇.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的介绍,后篇分享。
想要更快更方便的了解相关知识,可以关注微信公众号
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524