【发布时间】:2011-03-26 12:47:48
【问题描述】:
我只是在编写一个控制台实用程序,并决定使用 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);
}
}
【问题讨论】:
-
我也有同样的问题。 Seams NDesk.Options 不会抛出异常。
标签: c# console-application command-line-arguments ndesk.options