Leter du etter en Command Line Argument parser for .NET

stemmer
79

Jeg leter etter en kommandolinje argument parser, for eksempel Command line parser fra http://www.sellsbrothers.com/tools/Genghis/ .

Funksjoner Jeg leter etter:

  • Auto-generasjon av bruk
  • Bør kunne sjekke obligatoriske og valgfrie parametre
  • Parametere skal støtte IEnumerable med separator støtte
  • Bør støtte flagg parametere
  • Ville være hyggelig å støtte kombinere parametere som / fx == / f / x
  • Ville være fint å ikke tvinge til et mellomrom etter en parameter som /ftest.txt == / f test.txt

PS: Kommandolinje parser er ganske bra, jeg liker utformingen av det, men det er ingen dokumentasjon, ingen nye oppdateringer, og jeg kunne ikke finne ut å gjøre visse ting som hvordan å se etter nødvendige parameterne.

Publisert på 10/03/2009 klokken 17:22
kilden bruker
På andre språk...                            


12 svar

stemmer
4

Dessverre det er ingen innebygd støtte for å håndtere det på en standard måte. Har du sett på Powershell? Jeg vedder på at det er en klasse i det skall som gjør akkurat det du vil, eller noe lignende.

Svarte 10/03/2009 kl. 17:27
kilden bruker

stemmer
1

Tenk at når du begynner å bruke parser, vil du enten nødt til å opprettholde det selv, eller annet avhenge av noen andre til å opprettholde det for deg. Du kan være bedre å skrive din egen, fra de mest kritiske, umiddelbare, krav. Jeg har funnet ut at det ikke tar for mye arbeid å produsere noen ganske komplisert kommandolinje parsing for de fleste konsollbaserte programmer jeg har jobbet på.

Jeg har også funnet ut at når parsing blir for komplisert, kan det være på tide å slutte å bruke kommandolinjen.

Svarte 10/03/2009 kl. 17:27
kilden bruker

stemmer
52

Min personlige favoritt tredje part kommando parsing bibliotek er Command Line parser og jeg antar at dette er den du refererer til. Den siste utgivelse var mindre enn 2 måneder siden, og det er vanlige inger. Hvis du ønsker en mer moden tilbud du kan chek ut konsollen biblioteket i mono-prosjektet (beklager jeg kan ikke synes å finne en direkte link til navne i øyeblikket, men det er en del av mono rammeverk)

Svarte 10/03/2009 kl. 17:39
kilden bruker

stemmer
1

Jeg vedder dette er ikke helt det du leter etter, men:

Noen her hadde det problemet, og hans første tanke var "hei, har Objective Caml en ganske god en!", Og raskt portet det til F #.

Svarte 10/03/2009 kl. 17:44
kilden bruker

stemmer
1

Jeg bruker parser ut av C # 3.0 kokebok.

Alle eksemplene fra denne boken kan lastes ned her: http://examples.oreilly.com/9780596516109/

Søk etter argumenter 'og du finner det. Du må gjøre noen små endringer kode for å få det ut av hele greia inn i din egen klasse, men dette er ikke noe stort problem.

Den støtter alle poengene unntatt de to siste de (parameter som kombinerer og mangler plass).

Svarte 12/03/2009 kl. 12:58
kilden bruker

stemmer
20

Ta en titt på ndesk.options.

Det kalles Mono.Options nå.

Svarte 26/03/2009 kl. 12:47
kilden bruker

stemmer
5

En populær og ganske omfattende C kommandolinje parser er GNU getopt . Dette har blitt oversatt (eller klonet) for C # /. Net flere ganger. Noen av disse inkluderer:

Velg! Det finnes flere andre, og google kan fortelle deg om dem,

Svarte 26/03/2009 kl. 13:07
kilden bruker

stemmer
2

Edit: som fatcat1111 påpeker, gjorde denne funksjonen ikke med den endelige versjonen av .NET 4.0.

C # 4.0 har en ganske god en. Sannsynligvis ikke veldig nyttig ennå, men du bør kanskje vurdere å se på noe som vil gjøre hoppe til bygget i ett enkelt når det kommer ut. Bart De Smet snakket om det på hans B # blogg

Svarte 09/09/2009 kl. 19:19
kilden bruker

stemmer
0

Jeg er en fan av C # porten til OptParse, en innebygd bibliotek i Python. Det er ganske enkelt å bruke i forhold til de fleste av de andre forslagene her, og inneholder en rekke nyttige funksjoner i tillegg til å bare automatisk analyse.

Svarte 09/09/2009 kl. 19:23
kilden bruker

stemmer
1

Den BizArk Biblioteket inneholder et kommandolinje parser.

I utgangspunktet du bare lage en klasse som arver fra CmdLineObject, legge til egenskaper som du ønsker befolket fra kommandolinjen, legge til en CmdLineArgAttribute til eiendommene, og deretter ringe Initial i programmet. Den støtter ClickOnce URL argumenter også!

Funksjoner (fra området) ...

  • Automatisk initialisering: Klasse egenskaper angis automatisk basert på kommandolinjeargumenter.
  • Standardegenskaper: Send inn en verdi uten å spesifisere eiendommen navn.
  • Verdi konvertering: Bruker den kraftige ConvertEx klassen også inkludert i BizArk å konvertere verdier til riktig type.
  • Boolean flagg. Flagg kan angis ved ganske enkelt å bruke argument (ex, / b for sann og / B- til falsk), eller ved å legge verdien sant / usant, ja / nei, etc.
  • Argument arrays. Bare legge til flere verdier etter kommandolinjenavnet for å sette en eiendom som er definert som en matrise. Ex, / x 1 2 3 vil fylle x med oppstillingen {1, 2, 3} (forutsatt at x er definert som en oppstilling av heltall).
  • Kommandolinje aliaser: En eiendom kan støtte flere kommandolinje aliaser for det. For eksempel bruker Hjelp alias?.
  • Delvis navn anerkjennelse. Du trenger ikke å stave ut fullt navn eller alias, bare stave nok for parseren å disambiguate eiendommen / alias fra de andre.
  • Støtter ClickOnce: Kan initial egenskaper selv når de er spesifisert som søkestrengen i en URL for ClickOnce utplassert applikasjoner. Kommandolinje initialisering metoden vil oppdage om det kjører som ClickOnce eller ikke så koden din trenger ikke å endre seg når du bruker den.
  • Automatisk oppretter /? hjelp: Dette inkluderer fint formatering som tar hensyn til bredden på konsollen.
  • Load / Save kommandolinjeargumenter til en fil: Dette er spesielt nyttig hvis du har flere store, komplekse sett med kommandolinjeargumenter som du ønsker å kjøre flere ganger.
Svarte 28/01/2011 kl. 17:11
kilden bruker

Svarte 12/06/2011 kl. 09:52
kilden bruker

stemmer
0

Du kan gjerne min en Rug.Cmd

Lett å bruke og kan utvides kommandolinje-argumentet parser. Håndtak: Bool, pluss / minus, String, String List, CSV, Enumeration.

Innebygd "/? hjelpemodus.

Bygget i '/ ??' og '/? D' dokument generator moduser.

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);
        }
    }
}

Edit: Dette er mitt prosjekt, og som sådan dette svaret bør ikke bli sett på som en anbefaling fra en tredjepart. Som sagt jeg bruker det for hver kommandolinjebasert program jeg skriver, er det åpen kildekode, og det er mitt håp at andre kan ha nytte av det.

Svarte 23/01/2012 kl. 17:13
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more