适用于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.cs
和Runner.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); } } } }
您可以在第一个链接和此处找到它的文档(包括其帮助消息格式)。
希望它可以帮到某人!