我创建了一个简单的 C# dll 并使用 RegAsm.exe
注册了它。一个非常简单的方法是在没有参数的情况下调用并返回一个数字,这里是一个简化版本。
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# - 创建 C# dll 并使用 powershell 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30097002/