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

Était-ce utile?

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!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top