Closed 。这个问题需要细节或清晰度 /help/closed-questions 。目前不接受答案。
我使用 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’的类型初始值设定项引发了异常。” 行:1 字符:18 + $obj = 新对象 + CategoryInfo : InvalidOperation: (:) [New-Object],MethodInitationException +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 也是如此。因此,重新启动将重新开始,并修复。只要确保版本没有歧义就可以避免同样的问题。
该方法很可能是实例方法,这意味着您需要拥有该类的实例。您可以通过类上的公共默认构造函数来获取它,例如:
$obj = new-object namespace.classname
$obj.Method()
也许唯一的公共构造函数需要参数,例如:
$obj = new-object namespace.classname -arg 'string_arg',7
$obj.Method()
或者可能没有公共构造函数,但有一个返回实例的静态 Create 或 Parse 方法,例如:
$obj = [namespace.classname]::Create()
$obj.Method()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)