Wie kann man Legacy C# commadnline-Tools effizient konvertieren, um Subparser zu verwenden? Insbesondere interessiert mich der Fall einer effizienten Migration von Legacy-Commadline-Tools, von denen einige Hunderte von Parametern nebeneinander haben, die nicht zusammen gehören.Wie kann man Legacy-C# -Commandline-Tools effizient konvertieren, um Subparser zu verwenden?
In Python kann man eine subparser using the ArgParse Bibliothek erstellen, und dies kann eine effiziente Trennung monolithischer CLIs ermöglichen. Was sind einige gleichwertige empfohlene Methoden in C#?
Für diejenigen, die mit subparsers nicht vertraut sind, erlauben Sie mir, ein Beispiel zu zeigen. Stellen Sie sich ein Programm foo.exe mit einem Positionsargument vor, das barone oder bartwo sein kann und jedes seine eigenen Argumente hat. Ich möchte eine CLI-Erfahrung wie diese haben:
>> foo.exe
foo.exe [barone|bartwo]
error: missing first positional argument.
>> foo.exe barone
foo.exe barone [--baronevariable:<value>]
error: missing --baronevariable argument value
Die Legacy-Programme, die ich bin Umwandlung werden die Wintellect ICmdArgs Schnittstelle alle implementiert, und alle haben eine Erfahrung wie:
>> foo.exe
barone Some barone info
bartwo Some bartwo info
--baroneVariable Some barone variable info
--bartwoVariableOne Some bartwo variable one info
etc.....
Mit Das Wintellect-ICmdArg-Modell scheint keine spezifische Schnittstelle zu haben, um zu sagen, dass für Barone eine spezifische Variable --baronevariable - benötigt wird.
Ich suche weder nach einer Paketempfehlung noch bestreite ich die Trivialität einer solchen Aufgabe in der Zusammenfassung, da Leute, die diese Frage lesen, eine Klarstellung wünschen. Stattdessen möchte ich herkömmliche Befehlszeilentools mit Hunderten von Parametern relativ effizient konvertieren. Irgendwelche konstruktiven Empfehlungen?
Dieses etwas ausführlicher muss. Fragen Sie nach Argumentparsing-Bibliotheken? Das ist besonders off-topic für SO, ganz zu schweigen von bereits gestellten, beantworteten und geschlossenen [hier] (http://stackoverflow.com/questions/491595/best-way-to-parse-command-line-arguments-in- c? rq = 1). Oder fragen Sie, ob ein bestimmtes Verhalten in einer Bibliothek verfügbar ist? Wenn Letzteres, bitte beschreiben Sie das spezifische Verhalten. Wie es jetzt ist, ist die Frage ziemlich unklar. –
Wenn Sie mit 'prebaked' in der Base Class Library meinen, ich glaube nicht, dass es etwas gibt, aber es gibt [viele Bibliotheken von Drittanbietern] (http://nugetmusthaves.com/Tag/CommandLine). –
@MikeMcCaughan Hier ist ein Beispiel CLI, das ich möchte. Es ist ein Programm namens foo.exe, mit einem Positionsargument, das [barone | bartwo] sein kann, und jeder von diesen hat einige Parameter unabhängig von dem anderen. Wenn man also 'foo' eintippt, würde man so etwas wie 'foo [barone | bartwo]' drucken und 'foo barone' eingeben würde etwas wie 'foo barone [- baroneparam] missing param' ergeben. –