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.
Aquí hay una implementación .NET de getopt: http://www.codeplex.com/getopt
Para la posteridad:
CommandParser es otro con licencia BSD
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 --
.
Miguel de Icaza habla maravillas de Mono.Options . Puede usar el paquete nuget , o simplemente copiar el único archivo fuente C # en su proyecto.
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!