2009-05-10 10 views
7

Olvídate de las cosas sofisticadas de la web shmancy. Estoy buscando una buena herramienta de procesamiento de argumentos .NET CLI, prefiero el código fuente abierto. Esto es para utilidades rápidas y sucias que necesitan un manejo robusto y amigable de los argumentos de línea de comando.Herramientas de línea de comando robustas y amigables para .NET?

Estas son utilidades con tal vez un día de esfuerzo en ellas. Invertir unos días escribiendo un buen manejo de línea de comando parece exagerado ... pero realmente lo necesitan.

Características Me gusta en los controladores de línea de comandos. Estaría encantado con cualquier proyecto de código abierto que tuviera 2 o 3 de los siguientes.

  • Una sintaxis consistente, posix had a nice command line standard, pero no necesariamente posix.
  • Posibilidad de proporcionar nombres cortos para agrumentos. P.ej. "msbuild/t" == "msbuild/target"
  • Es compatible con buen análisis de línea de comandos luego se quita del camino. Quiero algunos que use mi código, no algo que impone un patrón en mi código, p. No quiero tener que responder a la presencia de un arg con un evento, ese tipo de cosas.
  • La separación de las preocupaciones es lo suficientemente buena como para que su lógica se pueda probar en unidades.
  • Oh, ¿es mucho pedir que lea los atributos de las propiedades de una clase (como en las clases de configuración de .NET)?
  • Me gusta el archivo de configuración reemplaza en msbuild. Puedo establecer propiedades en un archivo de construcción, pero anular en la línea de comando.
  • Built in "show use". Los archivos WSF (csript.exe) tienen esta funcionalidad. Sin embargo, no estoy dispuesto a escribir jscript para obtener el manejo de línea de comando.
  • Not powershell. No puedo encontrar a nadie en mi compañía que pueda soportar la sintaxis de Powershell.

PD Si no encuentro tal cosa, probablemente a soltar uno en Google Code en las próximas semanas

PPS Si pudiera añadir etiquetas, me Marcar este "pleasesearchtheinternetforme"

Respuesta

7

También desde codePlex, el proyecto CommandLine parece cumplir sus requisitos. Una aplicación liberal de copiar/pegar desde la página de inicio de los proyectos ...

La Biblioteca de analizadores de línea de comandos ofrece a las aplicaciones CLR una interfaz de programación simple para manipular la entrada de línea de comandos. Esta biblioteca le permite mostrar una pantalla de ayuda con un buen grado de personalización. La API mantiene en sus hombros todo lo aburrido del código.

El Analizador Biblioteca de comandos compatible:

  • opciones cortas (-s, por ejemplo)

    • Opción + Valor/No espacio: -sHello
    • Opción + Espacio + Valor: -s Hola
  • Opciones cortas como los modificadores; ningún valor requerido

    • Opción + Espacio + Opción + ....... -s -x -y -z
    • Opción + Opción + Opción + ...: -sxyz ...
    • Opción + Opción + Espacio/Cualquier peine.: -sx -YZ
  • opciones largas (--long, por ejemplo)

    • Opción + Igualdad + Valor: --long = Hola
    • Opción + Espacio + Valor: - Hola a largo
  • Opciones compuestas (sus valores sobre)

    • cualquiera 1; 2 ; 3; 4 (separador es configurable)

características comunes

Tanto acepta valores con espacios: "Hello World!" -s - largo "Hola CLR!"

+0

Voy a empezar aquí, ¡gracias! – Precipitous

2

De CodePlex, ConsoleFX parece que cumple con sus requisitos. Una aplicación liberal de copiar/pegar desde la página de inicio de los proyectos ...

ConsoleFx es un marco .NET/Mono basado en atributos para desarrollar fácilmente aplicaciones de interfaz de línea de comandos (CLI). Automatiza la mayor parte del trabajo relacionado con la creación de una aplicación CLI, como el análisis de los argumentos de la línea de comandos, el manejo de errores y las validaciones, todo mediante el uso de atributos. Con ConsoleFx, puede despedirse de un código largo e incómodo para analizar sus argumentos de línea de comandos.

Utilizando el analizador de línea de comandos de ConsoleFx, puede especificar de forma declarativa una gran cantidad de condiciones para especificar argumentos de línea de comandos.Estos pueden incluir la capacidad de:

  • hacer cumplir la orden de los argumentos de línea de comandos
  • Especificar opciones de interruptor y limitar el número de veces que pueden ocurrir como argumentos de línea de comandos
  • aceptan parámetros que se especifican para cambiar opciones y limitar el número de parámetros que se pueden especificar
  • Especificar argumentos sin interruptor y cómo se van a usar
  • Ejecutar validaciones personalizadas en parámetros de interruptor y argumentos sin conmutación, incluidas pruebas para expresiones regulares, archivo máscaras, enteros, booleanos, enumeraciones, etc.
  • asignar automáticamente argumento que no sea cambiar a propiedades fuertemente escrito para facilitar la lectura más fácil
  • realizar validaciones personalizadas que no pueden ser realizadas por ConsoleFx declarativa

ConsoleFx también proporciona clases de utilidad para la consola captura de salida y extensiones a la clase de consola. Planeamos agregar otras clases de utilidades en el futuro, convirtiéndola en la solución todo en uno para crear sus aplicaciones de línea de comandos.

+0

molestamente los ejemplos en la página principal y la guía de instalación inicial en realidad no compilar/trabajo, tienes que trabajar en lo que los nuevos parámetros son para –

+0

Por ejemplo, el método de descripción descrito aquí http://consolefx.codeplex.com/wikipage?title=GS_Simple04&referringTitle=GS_Simple no existe en la versión actual y no hay respuesta a la publicación del foro sobre eso http://consolefx.codeplex.com/discussions/400819 –

+0

es una buena biblioteca, habiendo dicho todo eso así que +1 –

7

Deberías echar un vistazo a Mono.Options (http://www.ndesk.org/Options) ya que es mucho más compatible con plataformas cruzadas y se usa mucho en Mono.

+0

idea inteligente, pero en realidad encuentro su "astuto uso de lambda" molesto. No es estable. Robará algunas ideas. – Precipitous

+0

Big ups para Mono.Options - http://devlicio.us/blogs/rob_reynolds/archive/2009/11/22/command-line-parsing-with-mono-options.aspx – ferventcoder

0

Creé un command line parsing class que hace las cosas para ti o una (amigable) manera amigable. Por ejemplo esta línea de comandos:

-country=Sweden -IsNiceCountry -Country="The Netherlands" /empty= /space=" " 

que todos los países:

var parameters = new ParametersParser(); 
parameters.GetParameters("-country") 

de parámetro de la cadena vacía:

parameters.GetFirstValue("/Empty") 

La clave no tiene valor:

parameters.HasKeyAndNoValue("-IsNiceCountry") 

Clave no existe (devuelve falso):

parameters.HasKey("/notExist") 

Y muchos más ...

Cuestiones relacionadas