创建 C# dll 并使用 powershell 方法

Create C# dll and use method with powershell

我创建了一个简单的 C# dll 并使用 RegAsm.exe 注册了它。一个非常简单的方法是在没有参数和 returns 数字的情况下调用,这里是一个简化版本。

namespace AVL_test {
    interface ITestClass {
        int GetNumber();
    }

    [ComVisible(true)]
    public class TestClass: ITestClass {
        public TestClass() { }

        public int GetNumber() {
            return 10;
        }
    }
}

我需要从 Powershell 调用该方法,所以我添加了类型

Add-Type -Path "C:\myPath\AVL_test.dll"

它似乎已加载,因为如果我 [AVL_test.TestClass] 我得到这个输出

IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False TestClass System.Object

但是如果我尝试通过键入 [AVL_test.TestClass]::GetNumber() 来调用 GetNumber(),我会得到这个错误

Method invocation failed because [AVL_test.TestClass] does not contain a method named 'GetNumber'.

我是不是做错了什么?

您的方法应该是 static 或者您需要创建该类型 (TestClass) 的实例。

最后可以使用

完成
New-Object -TypeName <full qualified type name> -ArgumentList <args>

或者在您的具体情况下:

$test = New-Object -TypeName AVL_Test.TestClass
$test.GetNumber()