2010-02-16 6 views
3

Mise à jour 2: Il semble que cette bibliothèque ne connaît pas Compact-cadre du tout et je continue à recevoir d'autres exceptions - je laisse cette question, mais je pense que vous ne devriez pas perdre le temps de répondre.
I opened another question pour la suggestion d'autres bibliothèques conviviales compact-cadre.Obtenir TargetInvocationException en utilisant la ligne de commande Parser Library


Utilisation du Command Line Parser Library.

J'utilise le code suivant pour définir les arguments de ligne de commande:

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

Je reçois TargetInvocationException sur help.AddOptions(this). La trace est:

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) 

Si le reste est nécessaire s'il vous plaît commenter et je l'afficherai.

Je n'ai pas pu trouver dans la documentation pour MethodInfo qu'il lance cette exception et donc je ne vois pas pourquoi je l'obtiens. Je l'utilise de la même manière que l'exemple de la bibliothèque et je ne reçois pas d'exception dans l'exemple d'application.

Je suppose que la raison réside dans le fait que je compile ceci pour un périphérique intelligent. Cela concerne probablement le CF3.5, mais je ne suis pas sûr.

Utilisation de VS2008.

Mise à jour: J'aurais dû mentionner que l'échantillon fonctionne sur le cadre complet alors que mon application fonctionne sur la version compacte.

J'ai remarqué que MethodInfo dans CF3.5 n'a pas une propriété ReturnParameter par opposition à la version complète de la structure.

également comme une réponse à la réponse ci-dessous la InnerException donne MissingMethodException

Merci.

Répondre

0

la bibliothèque n'a pas été conçue pour le Compact Framework

1

La propriété InnerException devrait vous donner plus de détails:

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

P.S: Vous utilisez this library, non?

+0

Oui, je mis à jour la question avec un lien vers la bibliothèque. – Shaihi

+0

J'obtiens System.MissingMethodException. J'ai remarqué l'utilisation du débogueur qui dans la version CF 'MethodInfo' n'a pas de propriété ReturnParameter. Je suppose que c'est la source du problème. – Shaihi

+0

Si c'est spécifique aux CF je ne peux pas aider, désolé ... –

Questions connexes