Question
Je cherche une bibliothèque getopt pour c #. Jusqu'à présent, j'en ai trouvé quelques-uns ( phpguru , XGetOptCS , getoptfordotnet ) mais elles ressemblent davantage à des tentatives inachevées qui ne prennent en charge qu’une partie du getopt de C. Existe-t-il une implémentation complète de getopt c #?
La solution
Voici une implémentation .NET de getopt: http://www.codeplex.com/getopt
Autres conseils
Miguel de Icaza rave à propos de Mono.Options . Vous pouvez utiliser le package nuget ou simplement copier le fichier source unique C # dans votre projet.
Pour la postérité:
CommandParser est un autre avec une licence BSD
Voici quelque chose que j'ai écrit Cela fonctionne plutôt bien, et a pas mal de fonctionnalités pour la petite quantité de code. Ce n'est pas un getopts cependant, mais cela peut répondre à vos besoins.
N'hésitez pas à poser des questions.
Ce n'est pas getopt, mais vous pouvez essayer NConsoler . Il utilise des attributs pour définir des arguments et des actions.
Le projet Mono en a (ou plutôt en avait un) basé sur des attributs, mais la dernière fois que j'ai vérifié, il était marqué comme obsolète. Mais comme il est open source, vous pourrez peut-être extraire le code et l’utiliser vous-même.
Pour mémoire, NUnit inclut un analyseur de ligne de commande à un fichier simple dans src \ ClientUtilities \ util \ CommandLineOptions.cs
(voir l'exemple d'utilisation dans ConsoleRunner.cs
et Runner.cs
situé sous src \ ConsoleRunner \ nunit-console
). Le fichier lui-même ne contient aucune information de licence et un lien vers son "en amont". ; semble être mort, son statut juridique est donc incertain.
L'analyseur prend en charge les paramètres d'indicateur nommés (comme / verbose
), les paramètres nommés avec des valeurs (comme / nomfichier:bar.txt
) et les paramètres non nommés, c.-à-d. beaucoup à la manière de l'hôte de script Windows les interprète . Les options peuvent être préfixées par /
, -
et -
.
Un de mes amis a suggéré docopt.net , bibliothèque d'analyse des arguments de ligne de commande basée sur la bibliothèque docopt pour Node.JS. Il est très simple à utiliser, mais il est avancé et analyse les arguments en fonction de la chaîne d’aide que vous écrivez.
Voici un exemple de code:
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);
}
}
}
}
Vous pouvez trouver la documentation correspondante (y compris le format de son message d’aide) à la fois sur le premier lien et sur ici .
J'espère que ça aide quelqu'un!