J'utilise ce code pour charger un ensemble .NET EM> à PowerShell: [System.Reflection.Assembly]::Load("System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") | out-null
[System.Windows.Forms.MessageBox]::Show("Hello world")
4 Réponses :
Bien que vous ne puissiez pas créer une sorte d'alias d'espace de noms en soi, vous pouvez utiliser le truc suivant (pris du livre de recettes PowerShell de Lee Holmes):
[Windows.Forms.MessageBox]::Show("Hello World!")
Je ne savais pas que le système soit impliqué. Merci!
@Kleinux: Cela fonctionne pour faire référence à des types, c'est pourquoi vous pouvez écrire [datetime] code> au lieu de [system.datetime] code> mais cela ne fonctionnera pas pour charger un assemblage (c'est-à-dire que type d'ajout -assembly windows.Forms code> ne fonctionnera pas).
En fait, "système" est pas b> implicite - il ne fait qu'une partie du chemin de recherche. Citation de "Windows PowerShell in Action": "Type Résolution - Lorsque PowerShell résout un nom de type, il vérifie d'abord la table d'alias de type nom de type; alors il vérifie si un type existe dont le nom complet correspond à la chaîne spécifiée. Finalement, il se répète Le type avec le système. Et vérifie si un type existe qui correspond à la nouvelle chaîne. Cela signifie que des choses qui se trouvent dans l'espace de noms système ressemblent à elles pourraient être aliasées. " Il y a plus que l'espace ici est limité.
Vous pouvez stocker le type de variable et utiliser la variable et dans ce cas, vous pouvez charger l'ensemble comme suit: p> Add-Type âassembly system.windows.forms
Utilisation de Réponse de Joey Vous pouvez utiliser cette fonction pour définir "Alias" sur les assemblages. Il attribue fondamentalement un assemblage à une fonction avec le nom de l'alias donné que vous souhaitez. E.G. Si vous souhaitez affecter System.Windows.Forms à Worms, vous appelleriez la fonction principale que P> [Windows.Forms.MessageBox]::Show("Hello World!")