更新2:
似乎这个库根本不是Compact-Framework,我不断得到其他例外 - 我将这个问题保留原样,但我认为你不应该浪费时间来回答它。
我opened another question建议其他紧凑框架友好的库。
使用Command Line Parser Library。
我使用以下代码来定义命令行参数:
[Option("d", "duration", Required = true, HelpText = "text.")]
public int duration = DEFAULT_TEST_DURATION;
[Option("s", "sleeptime", HelpText = "text.")]
public int sleepTime = DEFAULT_TEST_SLEEP;
[Option("p", "pause", HelpText = "text.")]
public int iterInterval = DEFAULT_TEST_INTERVAL;
[Option(null, "nosync", HelpText = "text.")]
public bool nosync = false;
[Option(null, "nosuspend", HelpText = "text.")]
public bool nosuspend = false;
[Option(null, "reboot", HelpText = "text.")]
public bool reboot = false;
[HelpOption(HelpText = "Dispaly this help screen.")]
public string GetUsage()
{
HelpText help = new HelpText("MyExe");
help.AddPreOptionsLine("Usage: MyExe -d 500 -s 20 -p 10 --nosync");
help.AdditionalNewLineAfterOption = true;
help.AddOptions(this);
return help;
}
我在help.AddOptions(this)
上收到了TargetInvocationException。跟踪是:
System.Reflection.TargetInvocationException was unhandled
Message="TargetInvocationException"
StackTrace:
at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean verifyAccess, StackCrawlMark& stackMark)
如果需要其他的请注释,我会发布。
我在MethodInfo的文档中找不到它会抛出此异常,因此我无法理解为什么会得到它。 我使用的方法与库的样本相同,我在示例应用程序中没有异常。
我想原因在于我正在为智能设备编译它。可能与CF3.5中的支持有关,但我不确定。
使用VS2008。
更新 我应该提到样本在完整框架上运行,而我的应用程序在紧凑版本上运行。
我注意到CF3.5中的MethodInfo
没有ReturnParameter
属性,而不是完整的框架版本。
同样作为下面答案的答案,InnerException
给出了MissingMethodException
感谢。
答案 0 :(得分:1)
InnerException属性应该为您提供更多详细信息:
try{
help.AddOptions(this);
} catch (TargetInvocationException e) {
Console.WriteLine(e.InnerException);
}
P.S:您正在使用this library,对吧?
答案 1 :(得分:0)
该库不是为Compact-Framework设计的