How to reference .NET assemblies using PowerShell

后端 未结 2 690
[愿得一人]
[愿得一人] 2020-11-27 16:56

I am a C# .NET developer/architect and understand that it uses objects (.NET objects) and not just streams/text.

I would like to be able to use PowerShell to call me

相关标签:
2条回答
  • 2020-11-27 17:17

    Take a look at the blog post Load a Custom DLL from PowerShell:

    Take, for example, a simple math library. It has a static Sum method, and an instance Product method:

    namespace MyMathLib
    {
        public class Methods
        {
            public Methods()
            {
            }
    
            public static int Sum(int a, int b)
            {
                return a + b;
            }
    
            public int Product(int a, int b)
            {
                return a * b;
            }
        }
    }
    

    Compile and run in PowerShell:

    > [Reflection.Assembly]::LoadFile("c:\temp\MyMathLib.dll")
    > [MyMathLib.Methods]::Sum(10, 2)
    
    > $mathInstance = new-object MyMathLib.Methods
    > $mathInstance.Product(10, 2)
    
    0 讨论(0)
  • 2020-11-27 17:19

    With PowerShell 2.0, you can use the built in Cmdlet Add-Type.

    You would just need to specify the path to the dll.

    Add-Type -Path foo.dll
    

    Also, you can use inline C# or VB.NET with Add-Type. The @" syntax is a HERE string.

    C:\PS>$source = @"
        public class BasicTest
        {
            public static int Add(int a, int b)
            {
                return (a + b);
            }
    
            public int Multiply(int a, int b)
            {
                return (a * b);
            }
        }
        "@
    
        C:\PS> Add-Type -TypeDefinition $source
    
        C:\PS> [BasicTest]::Add(4, 3)
    
        C:\PS> $basicTestObject = New-Object BasicTest 
        C:\PS> $basicTestObject.Multiply(5, 2)
    
    0 讨论(0)
提交回复
热议问题