无法从Powershell 3.0调用C#类

3

我创建了一个简单的C#类,以学习如何从PowerShell脚本调用C#类。我将该项目编译为“类库”并复制到我的C:\驱动器上。

在网上搜索后,发现我们需要使用以下命令将该.DLL文件注册到PowerShell中。

 PS C:\WINDOWS\system32> [Reflecion.Assembly]::LoadFile("C:\Calculator.dll")

PS C:\WINDOWS\system32> $ml = new-object Calculator()
       At line:1 char:29
      + $ml = new-object Calculator()
       +                             ~
   An expression was expected after '('.
+ CategoryInfo          : ParserError: (:) [], 
 ParentContainsErrorRecordException
   + FullyQualifiedErrorId : ExpectedExpression

在这个命令之后我没有收到任何错误提示。 但是当我尝试像这样访问该类时,我遇到了错误。 我是PowerShell的新手。请问您有什么建议吗?谢谢。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace Calculator
{
    public class Calculator
    {
    #region "Private Data Members"

        private int _operandA;
        private int _operandB;

    #endregion "Private Data Members"

        public int OperandA
        {
            get { return _operandA; }
            set { _operandA = value; }
        }     

        public int OperandB
        {
            get { return _operandB; }
            set { _operandB = value; }
        }

        public void AddNumbers(int a, int b)
        {
            int c;
            c = a + b;
            MessageBox.Show("The addition of 2 operands is c");
        } 
    }
}

从新对象中移除()。 - ArcSet
2个回答

4

您需要使用-addtype添加类型,然后创建新对象。 基于您的C#命名空间是Calculator,您需要从该命名空间调用类,请确保将另一个计算器添加到New-Object中。

Add-Type -Path 'C:\Calculator'
New-Object Calculator.Calculator

一个工作示例是:
Add-Type -Path 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Management.dll'
$Management = new-object System.Management.Instrumentation.Instrumentation
$Management

输出:System.Management.Instrumentation.Instrumentation

2

您不需要使用 () 来实例化,您还需要限定定义类的命名空间。

PS> [Reflection.Assembly]::LoadFile("C:\Calculator.dll")
PS> $ml = new-object Calculator.Calculator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接