Shaihi
Shaihi

Reputation: 3974

Getting TargetInvocationException using Command Line Parser Library

Update 2: Seems that this library is not Compact-Framework aware at all and I keep getting other exceptions - I am leaving this question as is, but I think you should not waste time on answering it.
I opened another question for suggestion of other compact-framework friendly libraries.


Using the Command Line Parser Library.

I am using the following code to define the command line arguments:

[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;
}

I am getting TargetInvocationException on help.AddOptions(this). The trace is:

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)

If the rest is needed please comment and I will post it.

I could not find in the documentation for MethodInfo that it throws this exception and so I can't see why I am getting it. I use this the same way the sample of the library does and I don't get an exception in the sample application.

I guess that the reason lies in the fact that I am compiling this for a smart device. Probably has to do with support in the CF3.5, but I am not sure.

Using VS2008.

Update: I should have mentioned that the sample runs on the full framework whereas my app runs on the compact version.

I noticed that MethodInfo in CF3.5 does not have a ReturnParameter property as opposed to the full framework version.

Also as an answer to the answer below the InnerException gives MissingMethodException

Thanks.

Upvotes: 3

Views: 632

Answers (2)

Shaihi
Shaihi

Reputation: 3974

the library is not designed for the Compact-Framework

Upvotes: 0

Paolo Tedesco
Paolo Tedesco

Reputation: 57202

The InnerException property should give you more details:

try{
    help.AddOptions(this);
} catch (TargetInvocationException e) {
    Console.WriteLine(e.InnerException);
}

P.S: You are using this library, right?

Upvotes: 1

Related Questions