【问题标题】:GetOpt library for C#C# 的 GetOpt 库
【发布时间】:2008-10-05 18:47:30
【问题描述】:

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

【问题讨论】:

    标签: c# getopt


    【解决方案1】:

    米格尔·德伊卡萨raves about Mono.Options。您可以使用nuget package,或者将single C# source file 复制到您的项目中。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 该链接已存档,可能不再可用。
      【解决方案3】:

      为了后代:

      CommandParser is another one 具有 BSD 许可证

      【讨论】:

        【解决方案4】:

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

        欢迎提问。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

            • Mono 中的 cmd 行解析器在 BCL 中会很棒。我一直在使用它,并且认为它很棒。
            【解决方案7】:

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

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

            【讨论】:

              【解决方案8】:

              我的一个朋友建议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 找到它的文档(包括其帮助消息格式)。

              希望它对某人有所帮助!

              【讨论】:

                猜你喜欢
                • 2011-04-25
                • 1970-01-01
                • 1970-01-01
                • 2012-11-07
                • 1970-01-01
                • 1970-01-01
                • 2020-07-18
                • 2023-04-10
                • 1970-01-01
                相关资源
                最近更新 更多