Получение TargetInvocationException с использованием библиотеки анализатора командной строки - PullRequest
3 голосов
/ 16 февраля 2010

Обновление 2: Кажется, что эта библиотека вообще не знакома с Compact-Framework, и я продолжаю получать другие исключения - я оставляю этот вопрос как есть, но я думаю, что вы не должны тратить время на ответы на него.
Я открыл еще один вопрос для предложения других дружественных для компактных сред библиотек.


Использование библиотеки анализатора командной строки .

Я использую следующий код для определения аргументов командной строки:

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

Я получаю TargetInvocationException на help.AddOptions(this).След:

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.

Обновление: Я должен был упомянуть, что образец работает наполный каркас, тогда как мое приложение работает на компактной версии.

Я заметил, что MethodInfo в CF3.5 не имеет свойства ReturnParameter в отличие от полной версии каркаса.

Также в качестве ответа на ответ ниже InnerException дает MissingMethodException

Спасибо.

Ответы [ 2 ]

1 голос
/ 16 февраля 2010

Свойство InnerException должно содержать более подробную информацию:

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

P.S .: Вы используете эту библиотеку , верно?

0 голосов
/ 02 марта 2010

библиотека не предназначена для Compact-Framework

...