Szukam parsera argumentów wiersza poleceń, takiego jak „Parser wiersza poleceń” z http://www.sellsbrothers.com/tools/Genghis/ .
Funkcje, których szukam:
- Automatyczne generowanie użycia
- Powinien być w stanie sprawdzić wymagane i opcjonalne parametry
- Parametry powinny obsługiwać IEnumerable z obsługą separatora
- Powinien obsługiwać parametry flag
- Przydałaby się obsługa łączenia parametrów, takich jak „/ fx” == „/ f / x”
- Byłoby miło nie wymuszać spacji po parametrze takim jak „/ftest.txt” == „/ f test.txt”
PS: „Parser wiersza poleceń” jest całkiem niezły, bardzo podoba mi się jego projekt, ale nie ma dokumentacji, żadnych nowych aktualizacji i nie mogłem wymyślić pewnych rzeczy, takich jak sprawdzenie wymaganych parametrów.
c#
.net
command-line
arguments
dr. zło
źródło
źródło
Odpowiedzi:
Moją ulubioną biblioteką parsowania wiersza poleceń innej firmy jest Parser wiersza poleceń i zakładam, że jest to ten, o którym mówisz. Najnowsze wydanie było niecałe 2 miesiące temu i regularnie pojawiają się zmiany. Jeśli chcesz bardziej dojrzałej oferty, możesz sprawdzić bibliotekę konsoli w projekcie mono (przepraszam, nie mogę w tej chwili znaleźć bezpośredniego łącza do przestrzeni nazw, ale jest to część frameworka mono)
źródło
Spójrz na ndesk.options.
To się nazywa Mono.Options teraz.
źródło
Popularnym i dość wszechstronnym parserem wiersza poleceń C jest GNU getopt . To zostało kilkakrotnie przeniesione (lub sklonowane) dla C # / .Net. Niektóre z nich obejmują:
Wybieraj! Jest kilka innych, o których Google może Ci powiedzieć,
źródło
Niestety nie ma wbudowanego wsparcia dla obsługi tego w standardowy sposób. Czy spojrzałeś na PowerShell? Założę się, że w tej powłoce jest klasa, która robi dokładnie to, czego chcesz lub coś podobnego.
źródło
Edytować: jak wskazuje fatcat1111, ta funkcja nie została dostarczona z ostateczną wersją .net 4.0.
C # 4.0 ma całkiem niezły. Prawdopodobnie nie jest to jeszcze zbyt pomocne, ale warto rozważyć spojrzenie na coś, co ułatwi przeskok do wbudowanej wersji, gdy się pojawi. Bart De Smet mówił o tym na swoim blogu B #
źródło
Proponuję NDesk.Options
Popatrz tutaj:
Najlepszy sposób na analizowanie argumentów wiersza poleceń w C #?
źródło
Weź pod uwagę, że kiedy zaczniesz używać tego parsera, będziesz musiał sam go obsługiwać lub polegać na kimś innym, aby utrzymywał go za Ciebie. Być może lepiej będzie napisać własne, zaczynając od najbardziej krytycznych, natychmiastowych wymagań. Zauważyłem, że wytworzenie dość skomplikowanego parsowania wiersza poleceń dla większości aplikacji konsolowych, nad którymi pracowałem, nie wymaga zbyt wiele pracy.
Zauważyłem również, że kiedy parsowanie stanie się zbyt skomplikowane, może nadszedł czas, aby przestać używać wiersza poleceń.
źródło
Założę się, że to nie jest to, czego szukasz, ale:
Ktoś tutaj miał ten problem, a jego pierwsza myśl brzmiała: „hej, ocaml ma całkiem niezły!” I szybko przeniósł go do F #.
źródło
Używam parsera z książki kucharskiej C # 3.0.
Wszystkie przykłady z tej książki można pobrać tutaj: http://examples.oreilly.com/9780596516109/
Wyszukaj „Argumenty”, a znajdziesz je. Musisz wprowadzić kilka drobnych zmian w kodzie, aby przenieść go z całości do własnej klasy, ale to nie jest duży problem.
Obsługuje wszystkie twoje punkty z wyjątkiem dwóch ostatnich (łączenie parametrów i brakująca spacja).
źródło
Biblioteka BizArk zawiera parsera wiersza polecenia.
Zasadniczo wystarczy utworzyć klasę, która dziedziczy po CmdLineObject, dodać właściwości, które chcesz wypełnić z wiersza polecenia, dodać CmdLineArgAttribute do właściwości, a następnie wywołać Initialize w swoim programie. Obsługuje również argumenty URL ClickOnce!
Funkcje (ze strony) ...
źródło
Jestem fanem portu C # do OptParse, wbudowanej biblioteki w Pythonie. Jest raczej prosty w użyciu w porównaniu z większością innych sugestii tutaj i zawiera wiele przydatnych funkcji oprócz tylko automatycznego analizowania.
źródło
Możesz polubić mój jeden Rug.Cmd
Łatwy w użyciu i rozszerzalny parser argumentów wiersza poleceń. Uchwyty: Bool, Plus / Minus, String, String List, CSV, Enumeration.
Wbudowany „/?” tryb pomocy.
Wbudowany '/ ??' i tryby generatora dokumentów „/? D”.
static void Main(string[] args) { // create the argument parser ArgumentParser parser = new ArgumentParser("ArgumentExample", "Example of argument parsing"); // create the argument for a string StringArgument StringArg = new StringArgument("String", "Example string argument", "This argument demonstrates string arguments"); // add the argument to the parser parser.Add("/", "String", StringArg); // parse arguemnts parser.Parse(args); // did the parser detect a /? argument if (parser.HelpMode == false) { // was the string argument defined if (StringArg.Defined == true) { // write its value RC.WriteLine("String argument was defined"); RC.WriteLine(StringArg.Value); } } }
Edycja: To jest mój projekt i jako taka, ta odpowiedź nie powinna być postrzegana jako poparcie strony trzeciej. To powiedziawszy, używam go do każdego programu opartego na wierszu poleceń, który piszę, jest to oprogramowanie typu open source i mam nadzieję, że inni mogą z niego skorzystać.
źródło