命令行科普:

例如输入: trans 123 456 789 -r 123 -r 789
上面例子中:trans是Command,123 456 789是CommandArgument,-r之后的都是CommandOption.注意:命令行的格式是固定的
Command是必须的,CommandArgument和CommandOption都是可选的
只有设置了CommandArgument的multipleValues为true后,CommandArgument才可以接受多个参数,单个参数和多个参数可以通过CommandArgument.Values获取
CommandOption设置了MultipleValue之后输入格式必须为-option optionvalue -option optionvalue...

NetCore插件:McMaster.Extensions.CommandLineUtils,项目源码:https://github.com/natemcmaster/CommandLineUtils

1、新建一个控制台项目

2、管理Nuget包。添加McMaster.Extensions.CommandLineUtils的引用

3、写代码

 using System;
using System.Threading.Tasks; namespace Tree
{
class Program
{
static void Main(string[] args)
{
CommandLine line = new CommandLine();
line.Run(args);
}
}
}
 using McMaster.Extensions.CommandLineUtils;

 namespace Tree
{
public class CommandLine
{
public void Run(string[] args)
{
CommandLineApplication app = new CommandLineApplication(false);
app.HelpOption("-?|-h|--help");
app.OnExecute(() =>
{
app.ShowHelp();
return ;
});
app.Command("trans", command =>
{
//var args1 = new[] { "Arg1", "arg with space", "args ' with \" quotes" };
//Process.Start("echo", ArgumentEscaper.EscapeAndConcatenate(args1));
string password = Prompt.GetPassword("please input your password: ");
//Process.Start(DotNetExe.FullPathOrDefault(), "run");
CommandArgument argument = command.Argument("[name]", "", multipleValues: true);
CommandOption option = command.Option("-t", "this is a template", CommandOptionType.NoValue);
command.OnExecute(() =>
{
if (option.Value() == "-t")
{
bool isRun = Prompt.GetYesNo("confirm your transaction, do your want to continue:", false);
if (!isRun)
{
return;
}
command.Out.WriteLine($"密码是{password}, 参数是:{argument}");
return;
}
});
});
app.Execute(args);
}
}
}

4、结果

NetCore控制台实现自定义CommandLine功能的更多相关文章

  1. 使用Java语言开发微信公众平台(八)——自定义菜单功能

    随着上一篇文章的结束,我们已经实现了所有消息的类型的回复功能.今天,我们来学习更加高大上,也更加重要的自定义菜单功能. 一.了解自定义菜单 自定义菜单是微信公众平台最常用也是最重要的功能之一.根据微信 ...

  2. 002-tomcat目录简介、应用部署【自动部署 ② 控制台部署 ③ 自定义部署】

    一.目录及功能 主目录下有bin,conf,lib,logs,temp,webapps,work 7个文件夹 1.1.bin目录[重要] bin目录主要是用来存放tomcat的命令,主要有两大类,一类 ...

  3. 利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能

    原文:利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能 利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能1.在界面上添加几个checkbox和一 ...

  4. 富文本编辑器UEditor自定义工具栏(三、自定义工具栏功能按钮图标及工具栏样式简单修改)

    导读 富文本编辑器UEditor提供丰富了定制配置项,如果想设置个性化的工具栏按钮图标有无办法呢?答案是肯定的!前两篇博文简要介绍了通过将原工具栏隐藏,在自定义的外部按钮上,调用UEditor各命令实 ...

  5. ThinkPHP5集成JS-SDK实现微信自定义分享功能

    最近开发一个项目,需要将链接分享给好友时能够自定义标题.简介和logo,现将ThinkPHP5集成JS-SDK实现微信自定义分享功能的过程整理成文. 一.准备工作 1.认证的公众号 不管是订阅号还是服 ...

  6. UE4里的自定义深度功能

    转自:http://www.52vr.com/article-1866-1.html 随着物理渲染系统的发布,虚幻引擎4同时引进了一个新的深度缓存功能,它叫作“自定义深度”,可以用于诸如编辑器里的选择 ...

  7. WPF编程,使用WindowChrome实现自定义窗口功能的一种方法。

    原文:WPF编程,使用WindowChrome实现自定义窗口功能的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/arti ...

  8. 升级IOS8游戏上传自定义头像功能失效的问题

    为了支持arm64,之前已经折腾了很久,昨晚打包准备提交苹果审核时,测试那边的同事反馈说游戏上传自定义头像功能不可用了. 游戏上传自定义功能的简介:卡牌游戏最初是<比武招亲>中有一个充VI ...

  9. windows下建立netcore控制台程序,然后传送到centos7下的docker容器里运行

    1.首先,在window下用vs2017开发netcore控制台项目. 2.把建立好的项目传送到centos7下面的容器里. docker cp sharefoldersforwindows/ 359 ...

随机推荐

  1. Entity Framework Context上下文管理(CallContext 数据槽)

    Context上下文管理 Q1:脏数据 Q2:一次逻辑操作中,会多次访问数据库,增加了数据库服务器的压力 >在一次逻辑操作中实现上下文实例唯一 方法一:单例模式:内存的爆炸式增长 在整个运行期间 ...

  2. 对web标准的理解,以及对w3c组织的认识

    (1)web标准规范要求,书写标签必须闭合.标签小写.不乱嵌套,可提高搜索机器人对网页内容的搜索几率.--- SEO(2)建议使用外链css和js脚本,从而达到结构与行为.结构与表现的分离,提高页面的 ...

  3. Strusts2笔记9--防止表单重复提交和注解开发

    防止表单重复提交: 用户可能由于各种原因,对表单进行重复提交.Struts2中使用令牌机制防止表单自动提交.以下引用自北京动力节点:

  4. React-Native 之 环境配置和简单使用

    # 前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会 ...

  5. Python中使用LMDB

    在python中使用lmdb linux中,可以使用指令pip install lmdb安装lmdb包. 生成一个空的lmdb数据库文件 # -*- coding: utf-8 -*- import ...

  6. linux安装python3(已有python2.x情况下)

    参考:https://www.cnblogs.com/Guido-admirers/p/6259410.html 1.官网下载python3 cd /home/download wget https: ...

  7. WeifenLuo.WinFormsUI.Docking"的使用

    要用 WeifenLuo.WinFormsUI.Docking 首先要下载: WeifenLuo.WinFormsUI.Docking 在当前工程“解决方案 - 引用”中 >> 右击引用 ...

  8. 解决mysql不能远程登入的问题

    mysql远程不能登入,问题就在于当时设置的账号只限制本地访问,mysql默认也只是本地访问. 之前的设置: 通过命令行登录管理MySQL服务器(提示输入密码时直接回车): mysql> /us ...

  9. bzoj 2752

    2752 思路: 线段树: 代码: #include <cstdio> #include <cstring> #include <iostream> #includ ...

  10. js处理局部scroll事件禁止外部scroll滚动解决办法,jquery.mousewheel.js处理时禁止办法说明

    js Code: <script> window.onload = function() { for (i = 0; i < 500; i++) { var x = document ...