使用命令行解析器库获取 TargetInvocationException
Posted
技术标签:
【中文标题】使用命令行解析器库获取 TargetInvocationException【英文标题】:Getting TargetInvocationException using Command Line Parser Library 【发布时间】:2011-01-17 08:50:14 【问题描述】:更新 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
谢谢。
【问题讨论】:
【参考方案1】:InnerException 属性应该为您提供更多详细信息:
try
help.AddOptions(this);
catch (TargetInvocationException e)
Console.WriteLine(e.InnerException);
P.S:你用的是this library,对吧?
【讨论】:
我得到 System.MissingMethodException。我注意到使用调试器,在 CF 版本MethodInfo
中没有 ReturnParameter 属性。我想这就是问题的根源。
不客气...如果是您对我的答案投了赞成票,那么您最好删除投票,这样当人们搜索未回答的问题时,您的问题就会弹出(也许还有其他人)将能够为您提供真正的帮助):)
太晚了。此外,它很有帮助,所以你值得拥有。【参考方案2】:
该库不是为 Compact-Framework 设计的
【讨论】:
以上是关于使用命令行解析器库获取 TargetInvocationException的主要内容,如果未能解决你的问题,请参考以下文章
正在尝试构建 xerces c++ 解析器。 Netbeans 和命令行构建错误未定义对“xercesc_3_2 ...”的引用