28

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

4

8 回答 8

31

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

于 2009-11-12T11:36:40.070 回答
9

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

于 2008-11-05T10:40:42.830 回答
2

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

随意问一些问题。

于 2008-10-05T19:51:20.077 回答
2

为后代:

CommandParser 是另一个具有 BSD 许可证的

于 2009-09-15T09:19:10.107 回答
1

这不是 getopt,但您可以尝试NConsoler。它使用属性来定义参数和动作。

于 2008-10-05T19:43:51.683 回答
1

Mono 项目有(或者说有)一个基于属性的项目,但最后我检查了它是否被标记为过时。但是由于它是开源的,您也许可以将代码提取出来并自己使用。

于 2008-10-06T19:44:07.407 回答
0

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

解析器支持命名标志参数 (like /verbose)、带值的命名参数 (like /filename:bar.txt) 和未命名参数,也就是说,与Windows Scripting Host 解释它们的方式非常相似。选项可能以/,-和为前缀--

于 2012-01-30T18:32:39.127 回答
0

我的一个朋友建议使用 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);
            }
        }
    }
}

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

希望它可以帮助某人!

于 2017-10-29T23:13:41.923 回答