我只是寫了一個控制檯實用程序,並決定使用NDesk.Options進行命令行解析。我的問題是,我如何執行必需的命令行選項?如何使用NDesk.Options強制執行必需的命令行選項?
我在docs看出:具有所需值
選項(附加「=」與選項名稱)或可選值(追加「:」在選項名稱)。
但是,當我在選項名稱末尾加上=
時,行爲沒有區別。理想情況下,Parse方法會拋出異常。
有什麼我需要做的嗎?
這裏是我的測試代碼:
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);
}
}
我有同樣的問題。接縫NDesk.Options不會拋出異常。 – 2010-09-08 15:53:50