在构建接受参数的控制台应用程序时,可以使用传递给Main的参数(string[] args)。

在过去,我只是简单地索引/循环该数组,并做了一些正则表达式来提取值。然而,当命令变得更加复杂时,解析就会变得非常糟糕。

我感兴趣的是:

你使用的库 你使用的模式

假设命令总是遵循常见的标准,比如这里回答的。


当前回答

我个人最喜欢的是Peter palota的http://www.codeproject.com/KB/recipes/plossum_commandline.aspx:

[CommandLineManager(ApplicationName="Hello World",
    Copyright="Copyright (c) Peter Palotas")]
class Options
{
   [CommandLineOption(Description="Displays this help text")]
   public bool Help = false;

   [CommandLineOption(Description = "Specifies the input file", MinOccurs=1)]
   public string Name
   {
      get { return mName; }
      set
      {
         if (String.IsNullOrEmpty(value))
            throw new InvalidOptionValueException(
                "The name must not be empty", false);
         mName = value;
      }
   }

   private string mName;
}

其他回答

http://www.codeplex.com/commonlibrarynet上有一个命令行参数解析器

它可以使用 1. 属性 2. 显式的调用 3.单行多个参数或字符串数组

它可以处理以下事情:

-config:Qa -startdate:${today} -region:'New York' Settings01

它很容易使用。

WPF TestApi库提供了c#开发中最好的命令行解析器之一。我强烈推荐你去看看,这是Ivo Manolov关于API的博客:

// EXAMPLE #2:
// Sample for parsing the following command-line:
// Test.exe /verbose /runId=10
// This sample declares a class in which the strongly-
// typed arguments are populated
public class CommandLineArguments
{
   bool? Verbose { get; set; }
   int? RunId { get; set; }
}

CommandLineArguments a = new CommandLineArguments();
CommandLineParser.ParseArguments(args, a);

请使用apache commons cli API的。net端口。这很有效。

http://sourceforge.net/projects/dotnetcli/

以及用于概念和介绍的原始API

http://commons.apache.org/cli/

Powershell Commandlets。

powershell根据命令行中指定的属性进行解析,支持验证、参数集、流水线、错误报告、帮助,最好的是返回。net对象供其他命令行使用。

我发现了一些有用的入门链接:

快速入门教程 MSDN编程指南 MSDN上的Namespace引用

我建议使用开源库CSharpOptParse。它解析命令行,并将用户定义的. net对象与命令行输入结合起来。在编写c#控制台应用程序时,我总是使用这个库。