Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
coreArgs - Ein Parser für Kommandozeilen Argumente unter .NET Standard
Geaz
myCSharp.de - Member

Avatar #avatar-3446.png


Dabei seit:
Beiträge: 150
Herkunft: Frankfurt

Themenstarter:

coreArgs - Ein Parser für Kommandozeilen Argumente unter .NET Standard

beantworten | zitieren | melden

Hallo zusammen!

Im Rahmen eines aktuellen Projektes benötigte ich einen Parser für Kommandozeilen Argumente.
Davon gibt es ja so einige, jedoch konnte ich keinen finden der alle meine Anforderungen erfüllen konnte:
  • Unterstützung für .NET Core
  • Parsen von bekannten Argumenten in definierte Properties
  • Parsen von unbekannten Argumenten als ein 'dynamic' Objekt (welches keine Exception wirft beim Zugriff von nicht definierten Properties)
  • Parsen von nicht gültigen Optionen in eine 'Mülleimer' Property


Deswegen habe ich das Ganze einfach mal als Übung genommen, um mein erstes Projekt für .NET Core umzusetzen. Zudem dachte ich, dass es vielleicht dem ein oder anderem auch hilft und wollte es einfach mal hier reinstellen :)

Zufinden ist das Projekt bei Github. Die Testabdeckung sollte recht gut sein, da ich es Test-Driven entwickelt habe (Leider habe ich bisher kein Tool für Testabdeckung für .NET Core Projekte gefunden - nur für das "alte" .json Projektformat).

Muss noch das ein oder andere im Code dokumentieren und überarbeiten, aber das meiste ist getan.

Die README sollte die kleine Bibliothek recht gut erklären. Und verdeutlichen was ich mit dem ein oder anderem Punkt oben meinte :)

Beste Grüße
Geaz
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Geaz am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

Hat Microsoft schon etwas länger umgesetzt Microsoft.Extensions.CommandLineUtils und wird für .NET Core Templates verwendet.

NUnit und XUnit überstützen beide bereits .NET Core mit csproj.

Ansonsten sei noch gesagt, dass mich Dein Code und Deine Options sehr an https://github.com/gsscoder/commandline erinnern, das sehr bekannt ist.
Wirkt so, als ob Du Dich hier etwas mehr als nur inspirieren lassen hast... ;-)
private Nachricht | Beiträge des Benutzers
Geaz
myCSharp.de - Member

Avatar #avatar-3446.png


Dabei seit:
Beiträge: 150
Herkunft: Frankfurt

Themenstarter:

beantworten | zitieren | melden

Zitat von Abt
Hat Microsoft schon etwas länger umgesetzt Microsoft.Extensions.CommandLineUtils und wird für .NET Core Templates verwendet.

Super, danke! Das kannte ich tatsächlich nicht. Auf die schnelle habe ich jetzt nur das hier gefunden: https://msdn.microsoft.com/de-de/magazine/mt763239.aspx

Hast du dazu zufällig noch mehr Doku? Wäre interessant, ob sich meine Punkte damit umsetzen lassen. Wenn ja, dann war es wenigstens eine gute Übung :)

[EDIT] Sieht mir beim Überfliegen nicht so aus, als könnte ich damit das 'dynamic' umsetzen...
Zitat von Abt
NUnit und XUnit überstützen beide bereits .NET Core mit csproj.

Inklusive Code Coverage (um die es mir geht)? Dazu hatte ich bei beiden nichts gefunden. Es ging mal mit OpenCover, aber wohl nicht mehr seit der Umstellung auf .csproj.
Zitat von Abt
Ansonsten sei noch gesagt, dass mich Dein Code und Deine Options sehr an https://github.com/gsscoder/commandline erinnern, das sehr bekannt ist.
Wirkt so, als ob Du Dich hier etwas mehr als nur inspirieren lassen hast... ;-)

Das Options Attribut habe ich von den Parametern her vom CommandLineParser abgeschaut, da ich den sonst nutze. Er jedoch halt nicht die anderen Punkte die ich benötige unterstützt. Aber mein Code erinnert dich daran? Das wäre echt ein Zufall, weil ich mir deren Code genau null mal angeschaut habe :D

Beste Grüße
Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von Geaz am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

Code Coverage wird nicht von Test-Frameworks errechnet, sondern von der Suite drum herum - in Deinem Fall zB. Visual Studio.

dynamic macht für mich hier kein Sinn.
Parameter, die ich intern verarbeiten will, hab ich doch in den Options. Ich sprech doch keine Parameter an, die ich nicht vorher festlege
Ist auch ein untypisches verhalten, denn eine CLI sollte einen Fehler werfen, wenn ein Parameter nicht existiert.
private Nachricht | Beiträge des Benutzers
Geaz
myCSharp.de - Member

Avatar #avatar-3446.png


Dabei seit:
Beiträge: 150
Herkunft: Frankfurt

Themenstarter:

beantworten | zitieren | melden

Zitat von Abt
Code Coverage wird nicht von Test-Frameworks errechnet, sondern von der Suite drum herum - in Deinem Fall zB. Visual Studio.

Das ist korrekt, deswegen habe ich mich ein wenig über deine Vorschläge gewundert. Weil ich sprach von Code Coverage und du gibts mir dann zwei Testframeworks :)
Zitat von Abt
dynamic macht für mich hier kein Sinn.
Parameter, die ich intern verarbeiten will, hab ich doch in den Options. Ich sprech doch keine Parameter an, die ich nicht vorher festlege :baby:
Ist auch ein untypisches verhalten, denn eine CLI sollte einen Fehler werfen, wenn ein Parameter nicht existiert.

In "normalen" Fällen ist das korrekt. Aber wie erwähnt, war es nunmal eine Anforderung für eins meiner Projekte (warum es dort Sinn macht kann ich dir gerne per PM schreiben, da es hier den Rahmen sprengen würde). Und genau für diese Anforderung habe ich halt keine Bibliothek gefunden, weshalb diese hier entstand.

Grüße
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Geaz am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

Da hab ich Deine Aussage bzgl. der Tests gestern Abend wohl falsch verstanden.

.NET Core ist in Sachen Tools noch instabil.
Ich würde da nicht zu viel Zeit verschwenden alles an Tools zu suchen, was man noch aus der alten .NET Framework-Welt gewohnt ist.
Soweit ist das .NET Core Ökosystem noch nicht. Mit VS 2017 kommen aber viele geniale Sachen, wie Live Unit Testing etc.
private Nachricht | Beiträge des Benutzers