optarg getopt_long example ejemplo c# getopt

getopt_long - Biblioteca GetOpt para C#



getopt python (8)

No es getopt, pero podrías probar NConsoler . Utiliza atributos para definir argumentos y acciones.

Estoy buscando una biblioteca getopt para c #. Hasta ahora encontré algunos ( phpguru , XGetOptCS , getoptfordotnet ) pero parecen más como intentos inacabados que solo admiten una parte del getopt de C. ¿Hay una implementación getopt c # completa?


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.




Para el registro, NUnit incluye un analizador simple de línea de comandos de un solo archivo en src/ClientUtilities/util/CommandLineOptions.cs (consulte el uso de ConsoleRunner.cs en ConsoleRunner.cs y Runner.cs ubicados en src/ConsoleRunner/nunit-console ). El archivo en sí no incluye ninguna información de licencia, y un enlace a su "ascendente" parece estar muerto, por lo que su estado legal es incierto.

El analizador admite parámetros de indicador con nombre (como /verbose ), parámetros nombrados con valores (como /filename:bar.txt ) y parámetros sin nombre, es decir, con mucho estilo de cómo Windows Scripting Host los interpreta . Las opciones pueden tener el prefijo / , - y -- .



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

Siéntase libre de hacer algunas preguntas.


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.

Aquí hay un código de muestra:

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 (incluido su formato de mensaje de ayuda) en el primer enlace y aquí .

Espero que ayude a alguien!