Podczas budowania aplikacji konsolowych, które pobierają parametry, można użyć przekazanych argumentów Main(string[] args)
.
W przeszłości po prostu indeksowałem / zapętlałem tę tablicę i robiłem kilka wyrażeń regularnych, aby wyodrębnić wartości. Jednak gdy polecenia stają się bardziej skomplikowane, analiza może być dość brzydka.
Więc jestem zainteresowany:
- Biblioteki, których używasz
- Wzory, których używasz
Załóżmy, że polecenia zawsze są zgodne z powszechnymi standardami, takimi jak odpowiedzi tutaj .
c#
.net
command-line-arguments
Paul Stovell
źródło
źródło
Odpowiedzi:
Zdecydowanie sugerowałbym użycie NDesk.Options ( Dokumentacja ) i / lub Mono.Options (ten sam API, inna przestrzeń nazw). Przykład z dokumentacji :
źródło
git checkout master
) lub ich argumenty nie są elastyczne (tj. Nie obsługują--foo 123
=--foo=123
=-f 123
=-f=123
a także-v -h
=-vh
).Naprawdę podoba mi się biblioteka parserów wiersza poleceń ( http://commandline.codeplex.com/ ). Ma bardzo prosty i elegancki sposób ustawiania parametrów za pomocą atrybutów:
źródło
--recursive
.Biblioteka WPF TestApi zawiera jeden z najładniejszych parserów wiersza poleceń do programowania w języku C #. Gorąco polecam przyjrzeć się temu, z bloga Ivo Manolova na API :
źródło
Spójrz na http://github.com/mono/mono/tree/master/mcs/class/Mono.Options/
źródło
Wygląda na to, że każdy ma swoje własne parsery z wiersza poleceń dla zwierząt domowych. Myślę, że lepiej też dodać moje :).
http://bizark.codeplex.com/
Ta biblioteka zawiera analizator składni wiersza polecenia , który zainicjuje klasę wartościami z wiersza polecenia. Ma mnóstwo funkcji (budowałem go od wielu lat).
Z dokumentacji ...
Analiza wiersza poleceń w środowisku BizArk ma następujące kluczowe funkcje:
źródło
Jakiś czas temu napisałem parser argumentów wiersza poleceń C #. Jest pod adresem : http://www.codeplex.com/CommandLineArguments
źródło
CLAP (parser argumentów wiersza poleceń) ma użyteczny interfejs API i jest doskonale udokumentowany. Tworzysz metodę z adnotacjami parametrów. https://github.com/adrianaisemberg/CLAP
źródło
myapp myverb -argname argvalue
(musi mieć-argname
) lubmyapp -help
(zwykle--help
).Istnieje wiele rozwiązań tego problemu. Dla kompletności i dla zapewnienia alternatywy, jeśli ktoś chce, dodam tę odpowiedź dla dwóch przydatnych klas w mojej bibliotece kodów Google .
Pierwszy to ArgumentList, który jest odpowiedzialny tylko za analizowanie parametrów wiersza poleceń. Zbiera pary nazwa-wartość zdefiniowane przełącznikami „/ x: y” lub „-x = y”, a także zbiera listę „nienazwanych” wpisów. Omówiono tutaj podstawowe użycie , zobacz klasę tutaj .
Drugą częścią tego jest CommandInterpreter, który tworzy w pełni funkcjonalną aplikację z linii poleceń z twojej klasy .Net. Jako przykład:
Za pomocą powyższego przykładowego kodu można uruchomić następujące czynności:
- lub -
To takie proste lub tak skomplikowane, jak potrzebujesz. Możesz przejrzeć kod źródłowy , przejrzeć pomoc lub pobrać plik binarny .
źródło
Podoba mi się ten , ponieważ możesz „zdefiniować reguły” dla argumentów, potrzebne czy nie, ...
lub jeśli jesteś facetem uniksowym, może ci się spodobać port GNU Getopt .NET .
źródło
Możesz polubić mój jeden dywanik
Łatwy w użyciu i rozwijany analizator argumentów wiersza poleceń. Uchwyty: Bool, Plus / Minus, ciąg, lista ciągów, CSV, wyliczanie.
Wbudowany w „/?” tryb pomocy.
Wbudowany w „/ ??” oraz tryby generatora dokumentów „/? D”.
Edycja: To jest mój projekt i jako taka odpowiedź nie powinna być postrzegana jako aprobata strony trzeciej. To powiedziawszy, używam go do każdego napisanego przeze mnie programu opartego na linii poleceń, jest to oprogramowanie typu open source i mam nadzieję, że inni mogą z niego skorzystać.
źródło
Parser argumentów wiersza poleceń znajduje się na stronie http://www.codeplex.com/commonlibrarynet
Może analizować argumenty za pomocą
1. atrybutów
2. jawnych wywołań
3. pojedynczej linii wielu argumentów LUB tablicy ciągów
Może obsługiwać takie rzeczy jak:
- config : Qa - data rozpoczęcia : $ { dzisiaj } - region : Ustawienia „Nowy Jork” 01
Jest bardzo łatwy w użyciu.
źródło
To jest program obsługi, który napisałem na podstawie
Options
klasy Novell .Ta jest skierowana do aplikacji konsolowych, które wykonują
while (input !="exit")
pętlę stylu, konsoli interaktywnej, takiej jak na przykład konsola FTP.Przykładowe użycie:
I źródło:
źródło
Moim ulubionym jest http://www.codeproject.com/KB/recipes/plossum_commandline.aspx autorstwa Petera Palotasa:
źródło
Ostatnio natknąłem się na implementację parsowania wiersza poleceń FubuCore. Bardzo mi się podoba, ponieważ:
Poniżej znajduje się prosty przykład, jak z tego korzystać. Aby zilustrować użycie, napisałem proste narzędzie, które ma dwa polecenia: - dodaj (dodaje obiekt do listy - obiekt składa się z nazwy (łańcucha), wartości (int) i flagi boolowskiej) - listy (list wszystkie aktualnie dodane obiekty)
Przede wszystkim napisałem klasę Command dla polecenia „add”:
To polecenie przyjmuje instancję CommandInput jako parametr, więc definiuję następną:
Następnym poleceniem jest „lista”, które jest realizowane w następujący sposób:
Polecenie „list” nie przyjmuje parametrów, więc zdefiniowałem dla tego klasę NullInput:
Teraz pozostaje tylko załączyć to w metodzie Main (), tak jak to:
Program działa zgodnie z oczekiwaniami, drukując wskazówki dotyczące prawidłowego użycia w przypadku, gdy jakiekolwiek polecenia są nieprawidłowe:
I przykładowe użycie polecenia „dodaj”:
źródło
Komendy PowerShell.
Analiza wykonywana przez PowerShell na podstawie atrybutów określonych w komendach, obsługa sprawdzania poprawności, zestawów parametrów, potoków, raportowania błędów, pomocy i najlepiej ze wszystkich zwracanych obiektów .NET do użycia w innych komendach.
Kilka linków, które okazały się pomocne na początku:
źródło
C # CLI to bardzo prosta biblioteka do analizy argumentów wiersza poleceń, którą napisałem. To dobrze udokumentowane i otwarte oprogramowanie.
źródło
Readme.mkd
plik wDocumentation
folderze).Parser Dżyngis może być trochę nieaktualny, ale jest bardzo funkcjonalny i działa całkiem dobrze dla mnie.
źródło
Sugerowałbym bibliotekę open source CSharpOptParse . Analizuje wiersz poleceń i nawadnia zdefiniowany przez użytkownika obiekt .NET za pomocą danych wejściowych wiersza polecenia. Zawsze zwracam się do tej biblioteki podczas pisania aplikacji konsoli C #.
źródło
Proszę użyć portu .net interfejsu API apli cli. To działa świetnie.
http://sourceforge.net/projects/dotnetcli/
oraz oryginalny API dla pojęć i wprowadzenia
http://commons.apache.org/cli/
źródło
Bardzo prosta i łatwa w użyciu klasa ad hoc do analizowania wiersza poleceń, która obsługuje domyślne argumenty.
źródło