Al crear aplicaciones de consola que toman parámetros, puede usar los argumentos pasados Main(string[] args)
.
En el pasado, simplemente indicé / hice un bucle en esa matriz e hice algunas expresiones regulares para extraer los valores. Sin embargo, cuando los comandos se vuelven más complicados, el análisis puede volverse bastante feo.
Entonces estoy interesado en:
- Bibliotecas que usas
- Patrones que usas
Suponga que los comandos siempre se adhieren a estándares comunes como los que se responden aquí .
c#
.net
command-line-arguments
Paul Stovell
fuente
fuente
Respuestas:
Sugeriría encarecidamente usar NDesk.Options ( Documentation ) y / o Mono.Options (misma API, diferente espacio de nombres). Un ejemplo de la documentación :
fuente
git checkout master
), o sus argumentos no son flexibles (es decir, no admite--foo 123
=--foo=123
=-f 123
=-f=123
y también-v -h
=-vh
).Realmente me gusta la biblioteca de analizador de línea de comandos ( http://commandline.codeplex.com/ ). Tiene una forma muy simple y elegante de configurar parámetros a través de atributos:
fuente
--recursive
.La biblioteca WPF TestApi viene con uno de los mejores analizadores de línea de comandos para el desarrollo de C #. Recomiendo investigarlo, desde el blog de Ivo Manolov en la API :
fuente
Mire http://github.com/mono/mono/tree/master/mcs/class/Mono.Options/
fuente
Parece que todo el mundo tiene sus propios analizadores de línea de comandos para mascotas, creo que es mejor que agregue el mío también :).
http://bizark.codeplex.com/
Esta biblioteca contiene un analizador de línea de comandos. que inicializará una clase con los valores de la línea de comandos. Tiene un montón de características (lo he estado construyendo durante muchos años).
De la documentación ...
El análisis de la línea de comandos en el marco de BizArk tiene estas características clave:
fuente
Escribí un analizador de argumentos de línea de comando C # hace un tiempo. Está en: http://www.codeplex.com/CommandLineArguments
fuente
CLAP (analizador de argumentos de línea de comandos) tiene una API utilizable y está maravillosamente documentado. Haces un método, anotando los parámetros. https://github.com/adrianaisemberg/CLAP
fuente
myapp myverb -argname argvalue
(debe tener-argname
) omyapp -help
(comúnmente--help
).Existen numerosas soluciones a este problema. Para completar y proporcionar la alternativa si alguien lo desea, estoy agregando esta respuesta para dos clases útiles en mi biblioteca de códigos de Google .
El primero es ArgumentList, que solo es responsable de analizar los parámetros de la línea de comandos. Recopila pares de nombre-valor definidos por los modificadores '/ x: y' o '-x = y' y también recopila una lista de entradas 'sin nombre'. Su uso básico se discute aquí , vea la clase aquí .
La segunda parte de esto es CommandInterpreter, que crea una aplicación de línea de comandos completamente funcional a partir de su clase .Net. Como ejemplo:
Con el código de ejemplo anterior puede ejecutar lo siguiente:
- o -
Es tan simple como eso o tan complejo como necesita que sea. Puede revisar el código fuente , ver la ayuda o descargar el binario .
fuente
Me gusta ese , porque puedes "definir reglas" para los argumentos, necesarios o no, ...
o si eres un tipo de Unix, entonces te puede gustar el puerto GNU Getopt .NET .
fuente
Te puede gustar mi alfombra.
Analizador de argumentos de línea de comandos fácil de usar y expandible. Manijas: Bool, Plus / Minus, String, String List, CSV, Enumeration.
Construido en '/?' modo de ayuda
Construido en '/ ??' y modos de generador de documentos '/? D'.
Editar: Este es mi proyecto y, como tal, esta respuesta no debe verse como un respaldo de un tercero. Dicho esto, lo uso para cada programa basado en la línea de comandos que escribo, es de código abierto y espero que otros puedan beneficiarse de él.
fuente
Hay un analizador de argumentos de línea de comando en http://www.codeplex.com/commonlibrarynet
Puede analizar argumentos usando
1. atributos
2. llamadas explícitas
3. una sola línea de argumentos múltiples O matriz de cadenas
Puede manejar cosas como las siguientes:
- config : Qa - fecha de inicio : $ { hoy } - región : 'New York' Settings01
Es muy fácil de usar.
fuente
Este es un controlador que escribí basado en la
Options
clase Novell .Este está dirigido a aplicaciones de consola que ejecutan un
while (input !="exit")
bucle de estilo, una consola interactiva como una consola FTP, por ejemplo.Ejemplo de uso:
Y la fuente:
fuente
Mi favorito personal es http://www.codeproject.com/KB/recipes/plossum_commandline.aspx por Peter Palotas:
fuente
Recientemente me encontré con la implementación del análisis de la línea de comandos de FubuCore Me gusta mucho, las razones son:
A continuación se muestra un ejemplo simple de cómo usar esto. Para ilustrar el uso, he escrito una utilidad simple que tiene dos comandos: - agregar (agrega un objeto a una lista - un objeto consiste en un nombre (cadena), valor (int) y una bandera booleana) - lista (listas todos los objetos agregados actualmente)
En primer lugar, escribí una clase de comando para el comando 'agregar':
Este comando toma una instancia de CommandInput como parámetro, así que lo defino a continuación:
El siguiente comando es 'list', que se implementa de la siguiente manera:
El comando 'list' no toma parámetros, por lo que definí una clase NullInput para esto:
Todo lo que queda ahora es conectar esto en el método Main (), así:
El programa funciona como se esperaba, imprimiendo pistas sobre el uso correcto en caso de que algún comando no sea válido:
Y un uso de muestra para el comando 'agregar':
fuente
Comandos de Powershell.
El análisis se realiza mediante powershell en función de los atributos especificados en los comandos, soporte para validaciones, conjuntos de parámetros, canalización, informes de errores, ayuda y, lo mejor de todo, objetos .NET devueltos para usar en otros comandos.
Un par de enlaces que encontré útiles para comenzar:
fuente
C # CLI es una biblioteca de análisis de argumentos de línea de comandos muy simple que escribí. Está bien documentado y de código abierto.
fuente
Readme.mkd
archivo en laDocumentation
carpeta).Genghis Command Line Parser puede estar un poco desactualizado, pero está muy completo y funciona bastante bien para mí.
fuente
Sugeriría la biblioteca de código abierto CSharpOptParse . Analiza la línea de comando e hidrata un objeto .NET definido por el usuario con la entrada de la línea de comando. Siempre uso esta biblioteca cuando escribo una aplicación de consola C #.
fuente
Utilice el puerto .net de la API cli de apache commons. Esto funciona muy bien.
http://sourceforge.net/projects/dotnetcli/
y la API original para conceptos e introducción
http://commons.apache.org/cli/
fuente
Una clase ad hoc muy simple y fácil de usar para el análisis de la línea de comandos, que admite argumentos predeterminados.
fuente