zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    第五周总结
    第四周总结
    第三周总结
    开课博客
    学习进度
    个人作业1-数组
    数组
    第一周考试总结
    团队个人冲刺第六天
    团队个人冲刺第五天
  • 原文地址:https://www.cnblogs.com/ogurayui/p/12326193.html
Copyright © 2011-2022 走看看