我使用此代码将.Net程序集加载到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")
Run Code Online (Sandbox Code Playgroud)
我可以为程序集设置别名(例如:'System.Windows.Forms'='Forms'),这样在调用MessageBox.Show()等静态方法时我不必输入程序集的全名吗?
ste*_*tej 13
您可以将类型存储在变量中并使用该变量
$forms = [System.Windows.Forms.MessageBox]
$forms::Show('Hello')
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以像这样加载程序集:
Add-Type –assembly system.windows.forms
Run Code Online (Sandbox Code Playgroud)
虽然您无法创建某种名称空间别名,但您可以使用以下技巧(取自Lee Holmes的PowerShell Cookbook):
$namespace = "System.Windows.Forms.{0}"
$form = New-Object ($namespace -f "Form")
Run Code Online (Sandbox Code Playgroud)
但这只会起作用,New-Object
因为它需要一个字符串作为类名.您不能在方括号中使用带有类型名称的语法.
但是,你可以做的是省略System
暗示的部分:
[Windows.Forms.MessageBox]::Show("Hello World!")
Run Code Online (Sandbox Code Playgroud)
使它稍短.
归档时间: |
|
查看次数: |
2759 次 |
最近记录: |