.Net框架的模块代码生成器--其三(dotnet tool指令的参数)

别人已经写好了一个这种处理指令参数的库,我们这里是使用别人的库来实现规范的指令系统

继续上一篇的gfile或者新建一个.Net Core控制台程序也可以

1、安装nuget包,程序包管理器控制台运行

Install-Package McMaster.Extensions.CommandLineUtils

2、编写代码,以下是代码模板

        private static CommandLineApplication _app;
        private static CommandOption _entity;
        private static CommandOption _version;
        private static readonly string Version = "1.0.4";
        static void Main(string[] args)
        {
            _app = new CommandLineApplication();
            _entity = _app.Option("-e|--entity", "Add The Entity And Related Cs File", CommandOptionType.MultipleValue);
            _version = _app.Option("-v|--version", "Show Version Of The Tool", CommandOptionType.NoValue);
            //给所有子命令添加帮助选项
            _app.HelpOption(inherited: true);
            _app.OnExecute((Action) Codegen);
            try
            {
                _app.Execute(args);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }

        private static void Codegen()
        {
            if (_version.Values.Any())
            {
                Console.WriteLine(Version);
                return;
            }
              
             //其他代码
        }

注意要引用命名空间McMaster.Extensions.CommandLineUtils;

下面解释代码:

_app相当于是一个可以识别和处理你的程序入参的对象

_app.Option可以给指令增加配置项,就是我们用别人指令时这样的,如dotnet tool install --global --add-source ./nupkg GenerateCsFile

这里的--global就是一个配置项,这个配置项没有参数,--add-source又是另一个配置项,这个配置项有一个参数./nupkg GenerateCsFile

使用这个方法时,第一个入参指示这个配置项名字,一般-XX和--XXX是等价的,第二个是说明文字,使用帮助文档时给用户看到的内容,第三个CommandOptionType确定这个配置需不需要参数需要几个参数

这个方法的返回值是CommandOption对象,当执行_app.Execute()开始解析参数时,这个对象将从解析到的参数中获得相应的值,在values(字符串数组)中可以拿到,有以下几种情况

1)如--add-source 的参数有一个./nupkg GenerateCsFile,那么Values数组中有一个字符串“./nupkg GenerateCsFile”;

2)如果是多个参数的必须要这样传 cfile -e AAA -e BBB 那么_entity.Values这个数组有两个元素

3)如果是没参数的,Values数组有一个null元素

4)如果没有传这个配置的,Values数组没有元素

_app.OnExecute指示当执行_app.Execute()开始解析参数时,要执行的代码,也就是主要的业务代码

_app.Execute解析传入的参数args(总所周知,执行dotnet run 时可以隔一个空格写一个任意字符串,这些个字符串都会放在args中)

3、调试代码,有两种方式,

一种是在项目的目录下使用命令行dotnet run -e XXX -e YYY -v

一种是在VS中,右击这个项目->属性,有个调试,可以在里面这样写,写完保存按F5就可以直接调试了

参考文档 https://natemcmaster.github.io/CommandLineUtils/docs/intro.html

原文地址:https://www.cnblogs.com/ogurayui/p/12326193.html