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?
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!