2009-03-03 13 views
1

Est-il possible d'appeler une méthode .NET à partir de PowerShell avec une liaison anticipée?PowerShell: Performances des appels de méthodes .NET

J'ai un script de pipeline qui appelle une seule méthode .NET dans process {...}. PowerShell appelle cette méthode par réflexion, et maintenant Invoke (pas la méthode elle-même, juste appel de réflexion) prend 70% du temps d'exécution total.

La méthode est toujours la même, donc je préférerais demander à PowerShell de ne pas utiliser de réflexion du tout.

Répondre

3

Je crois que les seuls types d'appel de méthode qui est précoce liés à PowerShell, ou au moins aussi tôt que possible liés dans un langage dynamique, sont les suivantes

  1. CmdLets.
  2. Méthodes statiques

Je ne suis pas aussi sûr de # 2. Je crois qu'ils doivent encore utiliser la réflexion pour comprendre la méthode sous-jacente.

CmdLets sont probablement le meilleur choix ici. Dans ce cas, l'appel réel est lié tôt, mais les paramètres doivent encore subir un processus de conversion. Essayez de déplacer votre appel de méthode dans un CmdLet et voir si cela vous aide.

+0

Merci pour la réponse. Le problème est que si je vais à la manière de CmdLet, je vais devoir créer un projet C#, et dans ce cas, il est plus facile de créer une application console C# pour l'ensemble de la tâche. Et j'espérais obtenir un seul petit script (appelez simplement une méthode de API dll pour toutes les entrées dans un fichier csv). –

+0

Je vais attendre un certain temps et ensuite accepter votre réponse s'il n'y a pas de solutions de contournement. –

Questions connexes