适用于C#的GetOpt库

我正在为c#寻找一个getopt库。 到目前为止,我发现了一些( phpguru , XGetOptCS , getoptfordotnet ),但这些看起来更像未完成的尝试,只支持C的getopt的一部分。 是否有完整的getopt c#实现?

这是getopt的.NET实现: http : //www.codeplex.com/getopt

Miguel de Icaza 对Mono.Options赞不绝口 。 您可以使用nuget包 ,或者只将单个C#源文件复制到项目中。

后人:

CommandParser是另一个拥有BSD许可证的人

这是我写的东西,它工作得相当不错,而且对于少量的代码有很多function。 然而,这不是getopts,但它可能适合您的需求。

随意提出一些问题。

它不是getopt,但你可能会尝试NConsoler 。 它使用属性来定义参数和操作。

Mono项目有(或者更确切地说)基于属性,但最后我检查它被标记为过时。 但由于它是开源的,您可以将代码拉出来并自己使用它。

对于记录, NUnit在src\ClientUtilities\util\CommandLineOptions.cs包含一个简单的单文件命令行解析器(请参阅位于src\ConsoleRunner\nunit-console下的ConsoleRunner.csRunner.cs示例用法)。 该文件本身不包含任何许可信息,并且其“上游”的链接似乎已经死亡,因此其法律地位不确定。

解析器支持命名标志参数(如/verbose ),带有值的命名参数(如/filename:bar.txt )和未命名的参数,即Windows Scripting Host如何解释它们的风格。 选项可能以/---为前缀。

我的一个朋友建议使用docopt.net ,这是一个基于Node.JS的docopt库解析库的命令行参数。 它使用起来非常简单,但是根据您编写的帮助字符串进行高级和分析。

这是一些示例代码:

 using System; using DocoptNet; namespace MyProgram { static class Program { static void Main(string[] args) { // Usage string string usage = @"This program does this thing. Usage: program set  program do  [-o ] program do  [somethingelse]"; try { var arguments = new Docopt().Apply(usage, args, version: "My program v0.1.0", exit: false); foreach(var argument in arguments) Console.WriteLine("{0} = {1}", argument.Key, argument.Value); } catch(Exception ex) { //Parser errors are thrown as exceptions. Console.WriteLine(ex.Message); } } } } 

您可以在第一个链接和此处找到它的文档(包括其帮助消息格式)。

希望它可以帮到某人!