创建 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()
我创建了一个简单的 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()