Ich habe gerade ein Konsolen-Dienstprogramm geschrieben und entschieden, NDesk.Options für das Kommandozeilen-Parsing zu verwenden. Meine Frage ist, wie erzwinge ich die erforderlichen Befehlszeilenoptionen?Wie erzwingen erforderlichen Befehlszeilenoptionen mit NDesk.Options?
Ich sehe im docs dass:
Optionen mit einem Sollwert (anhängen ‚=‘ dem Optionsnamen) oder einen optionalen Wert (anhängen ‚:‘ dem Optionsnamen).
Wenn ich jedoch einen =
am Ende des Optionsnamens setzen, gibt es keinen Unterschied im Verhalten. Im Idealfall würde die Parse-Methode eine Ausnahme auslösen.
Gibt es noch etwas, das ich tun muss?
Hier ist mein Testcode:
class Program
{
static void Main(string[] args)
{
bool show_help = false;
string someoption = null;
var p = new OptionSet() {
{ "someoption=", "Some String Option", v => someoption = v},
{ "h|help", "show this message and exit", v => show_help = v != null }
};
List<string> extra;
try
{
extra = p.Parse(args);
}
catch (OptionException e)
{
System.Console.Write("myconsole: ");
System.Console.WriteLine(e.Message);
System.Console.WriteLine("Try `myconsole --help' for more information.");
return;
}
if (show_help)
{
ShowHelp(p);
return;
}
System.Console.WriteLine("==================");
System.Console.WriteLine(someoption);
}
static void ShowHelp(OptionSet p)
{
System.Console.WriteLine("Usage: myconsole [OPTIONS]");
System.Console.WriteLine();
System.Console.WriteLine("Options:");
p.WriteOptionDescriptions(System.Console.Out);
}
}
Ich habe das gleiche Problem. Seams NDesk.Options wird keine Ausnahme auslösen. –