我正在寻找 c# 的 getopt 库。到目前为止,我发现了一些(phpguru、XGetOptCS、getoptfordotnet),但这些看起来更像是未完成的尝试,只支持 C 的部分 getopt。是否有完整的 getopt c# 实现?
8 回答
Miguel de Icaza对 Mono.Options 赞不绝口。您可以使用nuget 包,或者只是将单个 C# 源文件复制到您的项目中。
这是 getopt 的 .NET 实现:http: //www.codeplex.com/getopt
这是我写的东西,它工作得相当好,并且对于少量的代码具有相当多的功能。然而,它不是 getopts,但它可能适合您的需求。
随意问一些问题。
为后代:
CommandParser 是另一个具有 BSD 许可证的
这不是 getopt,但您可以尝试NConsoler。它使用属性来定义参数和动作。
Mono 项目有(或者说有)一个基于属性的项目,但最后我检查了它是否被标记为过时。但是由于它是开源的,您也许可以将代码提取出来并自己使用。
作为记录,NUnit包含一个简单的单文件命令行解析器src\ClientUtilities\util\CommandLineOptions.cs
(参见示例用法中ConsoleRunner.cs
和Runner.cs
位于下src\ConsoleRunner\nunit-console
)。该文件本身不包含任何许可信息,并且指向其“上游”的链接似乎已失效,因此其法律地位不确定。
解析器支持命名标志参数 (like /verbose
)、带值的命名参数 (like /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 <something>
program do <something> [-o <optionalthing>]
program do <something> [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);
}
}
}
}
您可以在第一个链接和此处找到它的文档(包括其帮助消息格式)。
希望它可以帮助某人!