Ao criar aplicativos de console que usam parâmetros, você pode usar os argumentos passados para Main(string[] args)
.
No passado, eu simplesmente indexei / fiz um loop nessa matriz e fiz algumas expressões regulares para extrair os valores. No entanto, quando os comandos ficam mais complicados, a análise pode ficar bem feia.
Então, eu estou interessado em:
- Bibliotecas que você usa
- Padrões que você usa
Suponha que os comandos sempre sigam padrões comuns, como os respondidos aqui .
c#
.net
command-line-arguments
Paul Stovell
fonte
fonte
Respostas:
Eu sugeriria fortemente o uso de NDesk.Options ( Documentation ) e / ou Mono.Options (mesma API, namespace diferente). Um exemplo da documentação :
fonte
git checkout master
), ou seus argumentos não são flexíveis (ou seja, não suporta--foo 123
=--foo=123
=-f 123
=-f=123
e também-v -h
=-vh
).Eu realmente gosto da Biblioteca do Analisador de Linha de Comando ( http://commandline.codeplex.com/ ). Possui uma maneira muito simples e elegante de configurar parâmetros por meio de atributos:
fonte
--recursive
também.A biblioteca WPF TestApi vem com um dos melhores analisadores de linha de comando para o desenvolvimento de C #. Eu recomendo procurar no blog de Ivo Manolov na API :
fonte
Veja http://github.com/mono/mono/tree/master/mcs/class/Mono.Options/
fonte
Parece que todo mundo tem seus próprios analisadores de linha de comando, figura que é melhor adicionar os meus também :).
http://bizark.codeplex.com/
Esta biblioteca contém um analisador de linha de comando que inicializará uma classe com os valores da linha de comando. Ele tem muitos recursos (eu venho desenvolvendo isso há muitos anos).
A partir da documentação ...
A análise de linha de comando na estrutura do BizArk possui os seguintes recursos:
fonte
Eu escrevi um analisador de argumento de linha de comando em C # há algum tempo. Está em: http://www.codeplex.com/CommandLineArguments
fonte
O CLAP (analisador de argumentos da linha de comando) possui uma API utilizável e está maravilhosamente documentado. Você cria um método, anotando os parâmetros. https://github.com/adrianaisemberg/CLAP
fonte
myapp myverb -argname argvalue
(deve ter-argname
) oumyapp -help
(geralmente--help
).Existem inúmeras soluções para esse problema. Para completar, e para fornecer a alternativa, se alguém desejar, estou adicionando esta resposta para duas classes úteis na minha biblioteca de códigos do google .
O primeiro é ArgumentList, responsável apenas pela análise dos parâmetros da linha de comando. Ele coleta pares nome-valor definidos pelas opções '/ x: y' ou '-x = y' e também coleta uma lista de entradas 'sem nome'. Seu uso básico é discutido aqui , veja a classe aqui .
A segunda parte disso é o CommandInterpreter, que cria um aplicativo de linha de comando totalmente funcional da sua classe .Net. Como um exemplo:
Com o código de exemplo acima, você pode executar o seguinte:
- ou -
É tão simples quanto isso ou tão complexo quanto você precisa. Você pode revisar o código fonte , visualizar a ajuda ou baixar o binário .
fonte
Eu gosto desse , porque você pode "definir regras" para os argumentos, necessários ou não, ...
ou, se você é do Unix, pode gostar da porta GNU Getopt .NET .
fonte
Você pode gostar do meu Rug.Cmd
Analisador de argumento de linha de comando expansível e fácil de usar. Alças: Bool, Mais / Menos, String, Lista de String, CSV, Enumeração.
Construídas em '/?' modo de ajuda.
Construídas em '/??' e modos de gerador de documentos '/? D'.
Edit: Este é o meu projeto e, como tal, esta resposta não deve ser vista como um endosso de terceiros. Dito isto, eu o uso para todos os programas baseados em linha de comando que escrevo, é de código aberto e é minha esperança que outros possam se beneficiar dele.
fonte
Há um analisador de argumentos da linha de comando em http://www.codeplex.com/commonlibrarynet
Ele pode analisar argumentos usando
1. atributos
2. chamadas explícitas
3. única linha de vários argumentos OU matriz de cadeias
Ele pode lidar com coisas como as seguintes:
- configuração : Qa - startdate : $ { hoje } - região : 'New York' Settings01
É muito fácil de usar.
fonte
Este é um manipulador que escrevi com base na
Options
classe Novell .Este é destinado a aplicativos de console que executam um
while (input !="exit")
loop de estilo, um console interativo como um console FTP, por exemplo.Exemplo de uso:
E a fonte:
fonte
Meu favorito pessoal é http://www.codeproject.com/KB/recipes/plossum_commandline.aspx por Peter Palotas:
fonte
Recentemente, me deparei com a implementação de análise de linha de comando FubuCore que eu realmente gosto, as razões são:
Abaixo está um exemplo simples de como usar isso. Para ilustrar o uso, escrevi um utilitário simples que possui dois comandos: - add (adiciona um objeto a uma lista - um objeto consiste em um nome (string), valor (int) e um sinalizador booleano) - list (lists todos os objetos adicionados atualmente)
Primeiro de tudo, escrevi uma classe Command para o comando 'add':
Este comando usa uma instância CommandInput como parâmetro, então eu defino isso a seguir:
O próximo comando é 'list', que é implementado da seguinte maneira:
O comando 'list' não possui parâmetros, então eu defini uma classe NullInput para isso:
Tudo o que resta agora é conectar isso no método Main (), assim:
O programa funciona conforme o esperado, imprimindo dicas sobre o uso correto, caso algum comando seja inválido:
E um exemplo de uso para o comando 'add':
fonte
Commandlets do PowerShell.
Análise realizada pelo powershell com base nos atributos especificados nos comandos, suporte para validações, conjuntos de parâmetros, pipelining, relatório de erros, ajuda e o melhor de todos os objetos .NET retornados para uso em outros comandos.
Alguns links que achei úteis para começar:
fonte
C # CLI é uma biblioteca de análise de argumento de linha de comando muito simples que eu escrevi. É bem documentado e de código aberto.
fonte
Readme.mkd
arquivo naDocumentation
pasta).O Analisador de Linha de Comando Genghis pode estar um pouco desatualizado, mas é muito completo e funciona muito bem para mim.
fonte
Eu sugeriria a biblioteca de código aberto CSharpOptParse . Ele analisa a linha de comando e hidrata um objeto .NET definido pelo usuário com a entrada da linha de comando. Eu sempre recorro a essa biblioteca ao escrever um aplicativo de console em C #.
fonte
Por favor, use a porta .net da API apache commons cli. Isso funciona muito bem.
http://sourceforge.net/projects/dotnetcli/
e a API original para conceitos e introdução
http://commons.apache.org/cli/
fonte
Uma classe ad hoc fácil de usar e muito simples para análise de linha de comando, que suporta argumentos padrão.
fonte