寻找.NET的命令行参数parsing器

我正在寻找一个命令行参数parsing器,如http://www.sellsbrothers.com/tools/Genghis/上的 “命令行parsing器”。

我正在寻找的function:

  • 自动生成使用
  • 应该能够检查必需的和可选的参数
  • 参数应该支持具有分隔符支持的IEnumerable
  • 应该支持标志参数
  • 很高兴支持结合参数,如“/ fx”==“/ f / x”
  • 如果不是像“/ftest.txt”==“/ f test.txt”这样的参数,

PS: “命令行parsing器”是相当不错的,我真的很喜欢它的devise,但没有文档,没有新的更新,我不知道怎么做某些东西,如如何检查所需的参数。

我个人最喜欢的第三方命令行parsing库是命令行parsing器 ,我认为这是你所指的。 最近的发布不到2个月前,并且有定期的提交。 如果你想要一个更成熟的产品,你可以在单声道项目中find控制台库(抱歉,目前我似乎无法直接链接到命名空间,但它是单声道框架的一部分)

看看ndesk.options。

现在叫做Mono.Options 。

GNU getopt是一个stream行且相当全面的C命令行parsing器。 这已被移植(或克隆)为C#/。净几次。 其中一些包括:

  • 在freshmeat.net上的getopt#
  • 在PHPGuru上的C#getopt
  • 在CodeProject上的XGetoptCS
  • 在CodeProject上使用GetOpt for .NET
  • 在Codeplex上采用C#.NET

拿你的select! 还有其他几个,谷歌可以告诉你这些,

可悲的是没有内置的支持以标准的方式处理。 你看过PowerShell? 我敢打赌,这个shell里有一门课,它正是你想要的或者类似的东西。

编辑:正如fatcat1111指出的,这个function并没有附带.net 4.0的最终版本。

C#4.0有一个相当不错的。 可能不是很有帮助,但你可能想考虑一下,当它出现时,会跳到内置的一个简单的东西。 Bart De Smet在他的B#博客上谈到了这件事

我build议NDesk.Options

看这里:

在C#中parsing命令行参数的最佳方法?

考虑一下,一旦你开始使用这个parsing器,你将不得不自己维护它,否则就要依赖别人来为你维护它。 从最重要,最直接的要求出发,你最好自己写自己的作品。 我发现,对于大部分基于控制台的应用程序来说,为一些相当复杂的命令行parsing工作并不需要太多的工作。

我还发现,当parsing过于复杂时,可能是停止使用命令行的时候了。

我打赌这不是你想要的,但是:

这里有人有这个问题,他的第一个想法是“嘿,ocaml有一个很好的!”,并迅速移植到F#。

我正在使用C#3.0食谱的parsing器。

本书中的所有例子都可以在这里下载: http : //examples.oreilly.com/9780596516109/

search“参数”,你会发现它。 你必须做一些小的代码修改,把它从整个事情中解放出来,但这不是什么大问题。

它支持除了最后两个点之外的所有点(参数组合和缺失空间)。

BizArk库包含一个命令行parsing器。

基本上,您只需创build一个从CmdLineObjectinheritance的类,添加要从命令行填充的属性,将CmdLineArgAttribute添加到属性,然后在程序中调用Initialize。 它也支持ClickOnceurl参数!

特点(从网站)…

  • 自动初始化:类属性是根据命令行参数自动设置的。
  • 默认属性:发送一个值,但不指定属性名称。
  • 价值转换:使用也包含在BizArk中的强大的ConvertEx类将值转换为正确的types。
  • 布尔标志。 标志可以通过简单地使用参数(ex,/ b为true和/ b-为false)或者通过添加值true / false,yes / no等来指定
  • 参数数组。 只需在命令行名称后面添加多个值即可设置定义为数组的属性。 例如,/ x 1 2 3将使用数组{1,2,3}来填充x(假设x被定义为一个整数数组)。
  • 命令行别名:一个属性可以支持多个命令行别名。 例如,“帮助”使用别名?
  • 部分名称识别。 你不需要拼出完整的名称或别名,只要拼写法足以使parsing器消除其他属性/别名的歧义。
  • 支持ClickOnce:即使在ClickOnce部署的应用程序的URL中指定为查询string,也可以初始化属性。 命令行初始化方法将检测它是否以ClickOnce方式运行,因此在使用代码时不需要更改。
  • 自动创build/? 帮助:这包括考虑到控制台的宽度的很好的格式。
  • 将命令行参数加载/保存到文件中:如果您有多个要运行多次的大型,复杂的命令行参数集,则这非常有用。

我是C#端口的粉丝,它是一个Python中的内置库OptParse。 与大多数其他build议相比,它的使用相当简单,除了自动parsing之外,还包含许多有用的function。

你可能会喜欢我的一个Rug.Cmd

易于使用和可扩展的命令行参数分析器。 句柄:布尔,加号/减号,string,string列表,CSV,枚举。

内置“/?” 帮助模式。

build在“/ ??” 和'/?D'文件生成器模式。

static void Main(string[] args) { // create the argument parser ArgumentParser parser = new ArgumentParser("ArgumentExample", "Example of argument parsing"); // create the argument for a string StringArgument StringArg = new StringArgument("String", "Example string argument", "This argument demonstrates string arguments"); // add the argument to the parser parser.Add("/", "String", StringArg); // parse arguemnts parser.Parse(args); // did the parser detect a /? argument if (parser.HelpMode == false) { // was the string argument defined if (StringArg.Defined == true) { // write its value RC.WriteLine("String argument was defined"); RC.WriteLine(StringArg.Value); } } } 

编辑:这是我的项目,因此这个答案不应被视为来自第三方的认可。 也就是说我用它来写每一个基于命令行的程序,它是开源的,我希望别人也能从中受益。