Pergunta

Eu estou procurando uma biblioteca getopt para c #. Até agora eu encontrei alguns ( phpguru , XGetOptCS , getoptfordotnet ) mas estes olhar mais como tentativas inacabadas que suportam apenas uma parte do getopt de C. Existe uma getopt c # plena implementação?

Foi útil?

Solução

Aqui está uma implementação do .NET de getopt: http://www.codeplex.com/getopt

Outras dicas

Miguel de Icaza raves sobre Mono.Options . Você pode usar o NuGet pacote , ou apenas copiar o único arquivo C # fonte em seu projeto.

Para a posteridade:

CommandParser é outro com uma licença BSD

Aqui é algo que eu escrevi , ele funciona bastante agradável, e tem um monte de recursos para a pequena quantidade de código. Não é getopts no entanto, mas pode atender às suas necessidades.

Sinta-se livre para fazer algumas perguntas.

Não é getopt, mas você pode tentar NConsoler . Ele usa atributos para definir argumentos e ações.

O Projeto Mono tem (ou melhor, tinha) um baseado em atributos, mas última vez que verifiquei foi marcado como obsoleto. Mas já que é open source, você pode ser capaz de puxar o código e usá-lo sozinho.

Para o registro, NUnit inclui um simples analisador de linha de comando de um arquivo em src\ClientUtilities\util\CommandLineOptions.cs (ver exemplo de uso em ConsoleRunner.cs e Runner.cs localizado sob src\ConsoleRunner\nunit-console). O próprio arquivo não inclui qualquer informação de licenciamento, e uma ligação à sua "upstream" parece estar morto, então seu estatuto jurídico é incerto.

Os suportes analisador denominado parâmetros bandeira (como /verbose), parâmetros nomeados com valores (como /filename:bar.txt) e parâmetros sem nome, ou seja, muito em estilo de como interpreta do Windows Scripting host-los . Opções podem ser prefixados com /, - e --.

Um amigo meu sugeriu docopt.net , uma linha de comando biblioteca argumento de análise baseada na docopt biblioteca para Node.js. É muito simples de usar, mas avançados e analisa argumentos com base na cadeia ajudá-lo a escrever.

Aqui está um código de exemplo:

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);
            }
        }
    }
}

Você pode encontrar documentação para ele (incluindo seu formato mensagem de ajuda), tanto o primeiro link e aqui .

Espero que ajude alguém!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top