【发布时间】:2008-10-05 18:47:30
【问题描述】:
我正在寻找用于 c# 的 getopt 库。到目前为止,我发现了一些(phpguru、XGetOptCS、getoptfordotnet),但这些看起来更像是未完成的尝试,只支持 C 的部分 getopt。 有完整的 getopt c# 实现吗?
【问题讨论】:
我正在寻找用于 c# 的 getopt 库。到目前为止,我发现了一些(phpguru、XGetOptCS、getoptfordotnet),但这些看起来更像是未完成的尝试,只支持 C 的部分 getopt。 有完整的 getopt c# 实现吗?
【问题讨论】:
米格尔·德伊卡萨raves about Mono.Options。您可以使用nuget package,或者将single C# source file 复制到您的项目中。
【讨论】:
这是 getopt 的 .NET 实现:http://www.codeplex.com/getopt
【讨论】:
为了后代:
CommandParser is another one 具有 BSD 许可证
【讨论】:
Here 是我写的,它工作得相当不错,并且对于少量的代码具有相当多的功能。然而,它不是 getopts,但它可能适合您的需求。
欢迎提问。
【讨论】:
这不是 getopt,但您可以尝试NConsoler。它使用属性来定义参数和动作。
【讨论】:
Mono 项目有(或者说有)一个基于属性的项目,但最后我检查了它是否被标记为过时。但是由于它是开源的,您也许可以将代码拉出来并自己使用。
【讨论】:
作为记录,NUnit 在src\ClientUtilities\util\CommandLineOptions.cs 中包含一个简单的单文件命令行解析器(请参阅位于src\ConsoleRunner\nunit-console 下的ConsoleRunner.cs 和Runner.cs 中的示例用法)。该文件本身不包含任何许可信息,其“上游”的link 似乎已失效,因此其法律地位尚不确定。
解析器支持命名标志参数(如/verbose)、带值的命名参数(如/filename:bar.txt)和未命名参数,也就是说,与Windows Scripting Host interprets them 的风格非常相似。选项可能以/、- 和-- 为前缀。
【讨论】:
我的一个朋友建议docopt.net, 基于 docopt Node.JS 库的命令行参数解析库。它使用起来非常简单,而且非常先进,它会根据您编写的帮助字符串解析参数。
这里有一些示例代码:
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);
}
}
}
}
您可以在第一个链接和here 找到它的文档(包括其帮助消息格式)。
希望它对某人有所帮助!
【讨论】: