我正在使用PowerShell 1.0版本的脚本调用DLL文件中的方法,并使用以下代码将DLL文件加载到PowerShell中。
该类包含一个公共默认构造函数。我尝试使用下面的代码创建该类的对象:
[System.Reflection.Assembly]::LoadFile("path of dll") is loaded successfully
GAC Version Location
--- ------- --------
False v2.0.50727 location of dll
该类包含一个公共默认构造函数。我尝试使用下面的代码创建该类的对象:
$obj = new-object namespce.classname
并且它抛出以下错误:
New-Object : 使用 "0" 个参数调用 ".ctor" 时发生异常: "'namespce.classname' 的类型初始化程序引发了异常。"
在 line:1 char:18
+ $obj = new-object <<<< namespce.classname
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand`
当我尝试调用类的方法而没有创建对象时,尽管该类包含该方法,但它会抛出以下错误:
PS C:\Windows\system32> [namespace.classname]::method()
Method invocation failed because [namespace.classname] doesn't contain a method named 'method'.
At line:1 char:39
+ [namespace.classname]::method <<<< ()
+ CategoryInfo : InvalidOperation: (method:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
这通常是DLL版本问题导致的版本错误。Dot NET不允许卸载,PowerShell也是如此。因此,重新启动会重新开始并解决问题。只需确保版本没有歧义即可避免同样的问题。