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 : ".ctor" を "0" 引数で呼び出し中に例外が発生しました: "'namespce.classname' の型初期化子が例外をスローしました。"
行: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 のバージョンの問題です。ドット NET ではアンロードが許可されず、powershell でも同じです。したがって、再起動すると最初からやり直され、修正も行われます。バージョンがあいまいにならないようにして、同じ問題を回避してください。