2008-10-05 23 views

Respuesta

1

No es getopt, pero puede intentar NConsoler. Utiliza atributos para definir argumentos y acciones.

+0

el enlace está roto –

2

Here es algo que escribí, funciona bastante bien, y tiene bastantes funciones para la pequeña cantidad de código. No es getopts sin embargo, pero puede adaptarse a sus necesidades.

No dude en hacer algunas preguntas.

1

El Proyecto Mono tiene (o más bien tenía) uno basado en atributos, pero la última vez que lo revisé se marcó como obsoleto. Pero dado que es de código abierto, es posible que pueda extraer el código y usarlo usted mismo.

+0

El analizador de líneas cmd en Mono sería genial en el BCL. Lo uso todo el tiempo y creo que es genial. –

0

Para el registro, NUnit incluye un sencillo de un solo archivo del analizador de línea de comandos en src\ClientUtilities\util\CommandLineOptions.cs (véase el ejemplo de uso en ConsoleRunner.cs y Runner.cs situado bajo src\ConsoleRunner\nunit-console). El archivo en sí no incluye ninguna información de licencia, y un link en su "ascendente" parece estar muerto, por lo que su estado legal es incierto.

parámetros bandera El analizador mediante named (como /verbose), parámetros nombran con valores (como /filename:bar.txt) y parámetros sin nombre, es decir, tanto en el estilo de cómo Windows Scripting Host interprets them. Las opciones pueden tener el prefijo /, - y --.

0

Un amigo mío sugirió docopt.net, una biblioteca de análisis de argumentos de línea de comandos basada en la biblioteca docopt para Node.JS. Es muy simple de usar, pero avanzado y analiza argumentos basados ​​en la cadena de ayuda que escribe.

He aquí algunos ejemplos de código:

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); 
      } 
     } 
    } 
} 

Puede encontrar documentación para ello (incluyendo su formato de mensaje de ayuda), tanto en el primer enlace y here.

Espero que ayude a alguien!