2008-10-05 6 views

Répondre

1

Ce n'est pas getopt, mais vous pouvez essayer NConsoler. Il utilise des attributs pour définir les arguments et les actions.

+0

le lien est rompu –

2

Here est quelque chose que j'ai écrit, cela fonctionne plutôt bien, et a beaucoup de fonctionnalités pour la petite quantité de code. Ce n'est pas getopts cependant, mais cela peut convenir à vos besoins.

N'hésitez pas à poser des questions.

1

Le Projet Mono a (ou plutôt avait) un projet basé sur des attributs, mais la dernière fois que j'ai vérifié qu'il était marqué comme obsolète. Mais puisque c'est open source, vous pourriez être en mesure d'extraire le code et de l'utiliser vous-même.

+0

L'analyseur de ligne cmd dans Mono serait génial dans la BCL. Je l'utilise tout le temps et pense que c'est génial. –

0

Pour mémoire, NUnit comprend un analyseur simple ligne de commande d'un fichier src\ClientUtilities\util\CommandLineOptions.cs (voir un exemple d'utilisation dans ConsoleRunner.cs et Runner.cs situé sous src\ConsoleRunner\nunit-console). Le fichier lui-même ne comprend aucune information de licence, et un link à son "en amont" semble être mort, donc son statut juridique est incertain.

L'analyseur prend en charge les paramètres nommés drapeau (comme /verbose), les paramètres nommés avec des valeurs (comme /filename:bar.txt) et des paramètres sans nom, qui est, bien dans le style de la façon dont Windows Scripting Host interprets them. Les options peuvent être préfixées avec /, - et --.

0

Un de mes amis a suggéré docopt.net, une bibliothèque d'analyse d'argument de ligne de commande basée sur la bibliothèque docopt pour Node.JS. Il est très simple à utiliser, mais avancé et analyse les arguments basés sur la chaîne d'aide que vous écrivez.

Voici quelques exemples 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 de la documentation pour elle (y compris son format d'aide de message) à la fois le premier maillon et here.

Espérons que ça aide quelqu'un!