C#控制台程序的参数解析类库CommandLine简单使用说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C#控制台程序的参数解析类库CommandLine简单使⽤说明前⾔
C#开发的控制台程序,默认接收string[] args参数。
如果有多个参数需要输⼊时,可以按照顺序依次输⼊;但如果有些参数不是必选的,或者有些参数中间需要有空格⽐如时间“2016-05-18 24:35:00”,处理起来就⽐较⿇烦了。
⼀些常⽤的命令⾏⼯具都会提供指定参数的⽅式,⽐如:curl C:\Users\Administrator>curl --help
Usage: curl [options...] <url>
Options: (H) means HTTP/HTTPS only, (F) means FTP only
--anyauth Pick "any" authentication method (H)
-a/--append Append to target file when uploading (F)
--basic Use HTTP Basic Authentication (H)
--cacert <file> CA certificate to verify peer against (SSL)
--capath <directory> CA directory to verify peer against (SSL)
-E/--cert <cert[:passwd]> Client certificate file and password (SSL)
这⾥要介绍的就是帮助我们轻易完成参数接收和帮助输出的开源类库,同时它可以把接收到的参数转换成对象,⽅便程序的处理。
教程
1. 新建控制台项⽬,安装CommandLine。
可以下载、编译、引⽤CommandLine.dll,也可以使⽤nuget安装 Install-Package CommandLineParser
2. 新建参数说明类 Options
⾸先,添加命名空间
using CommandLine;
using CommandLine.Text;
然后,定义Options 类
1class Options
2 {
3 [Option('r', "read", MetaValue = "FILE", Required = true, HelpText = "输⼊数据⽂件")]
4public string InputFile { get; set; }
5
6 [Option('w', "write", MetaValue = "FILE", Required = false, HelpText = "输出数据⽂件")]
7public string OutputFile { get; set; }
8
9
10 [Option('s', "start-time", MetaValue = "STARTTIME", Required = true, HelpText = "开始时间")]
11public DateTime StartTime { get; set; }
12
13 [Option('e', "end-time", MetaValue = "ENDTIME", Required = true, HelpText = "结束时间")]
14public DateTime EndTime { get; set; }
15
16
17 [HelpOption]
18public string GetUsage()
19 {
20return HelpText.AutoBuild(this, current => HelpText.DefaultParsingErrorsHandler(this, current));
21 }
22
23 }
3. 修改控制台主程序 Program的Main函数
1//输出信息时的头信息
2private static readonly HeadingInfo HeadingInfo = new HeadingInfo("演⽰程序", "V1.8");
3
4static void Main(string[] args)
5 {
6//这种输出会在前⾯添加"演⽰程序"⼏个字
7 HeadingInfo.WriteError("包含头信息的错误数据");
8 HeadingInfo.WriteMessage("包含头信息的消息数据");
9
10 Console.WriteLine("不包含头信息的错误数据");
11 Console.WriteLine("不包含头信息的消息数据");
12
13var options = new Options();
14if (CommandLine.Parser.Default.ParseArguments(args, options))
15 {
16 Console.WriteLine("Input File:" + options.InputFile);
17 Console.WriteLine("Output File:" + options.OutputFile);
18
19 Console.WriteLine("开始时间:" + options.StartTime.ToString("yyyy年MM⽉dd⽇ HH点mm分"));
20 Console.WriteLine("结束时间:" + options.EndTime.ToString("yyyy年MM⽉dd⽇ HH点mm分"));
21 Console.Read();
22 }
23//else
24//{
25// Console.WriteLine(options.GetUsage());
26// Console.Read();
27//}
28
29 Console.Read();
30 }
3. 测试控制台程序
不输⼊任何参数,输出了参数的说明信息,如下图:
输⼊参数,如下图:
时间和字符串类型的字段都获取到了值。
。