2010-06-20 54 views
37

我是C#.NET開發人員/架構師,並且明白它使用對象(.NET對象)而不僅僅是流/文本。如何使用PowerShell引用.NET程序集

我想能夠使用PowerShell調用我的.NET(C#庫)集合的方法。

如何在PowerShell中引用程序集並使用程序集?

回答

41

看看博客文章Load a Custom DLL from PowerShell

舉個例子來說,一個簡單的數學庫。它有一個靜態的總和方法,和實例產品的方法:

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; 
     } 
    } 
} 

編譯並在PowerShell中運行:

> [Reflection.Assembly]::LoadFile("c:\temp\MyMathLib.dll") 
> [MyMathLib.Methods]::Sum(10, 2) 

> $mathInstance = new-object MyMathLib.Methods 
> $mathInstance.Product(10, 2) 
+0

鏈接沒有加載... – Russell 2010-06-20 13:25:31

+1

鏈接加載在這裏。我會更新我的職務,並從複製的相關部分。 – 2010-06-20 13:26:37

+0

謝謝你的文字。 :)我現在知道爲什麼當我搜索時我找不到答案,我會嘗試一下並讓你知道我該怎麼去。:) – Russell 2010-06-20 13:30:11

43

使用PowerShell 2.0,可以使用內置的Cmdlet的添加型。

你只需要指定dll的路徑。

Add-Type -Path foo.dll 

此外,您可以使用內聯C#或帶添加類型的VB.NET。在@」語法是這裏的字符串。

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

哇!這真是不可思議,如果我們可以在控制檯中擁有智能感知功能,這將會更加強大 – mjsr 2010-06-23 14:11:54

+1

Visual Studio中PowerShell的一些選項:http://powerguivsx.codeplex.com/ PowerShell Plus:IDE http://powershellplus.com/ – 2010-06-24 17:33:32

+2

最新的ISE有intellisense。 – MDMoore313 2013-11-01 16:35:55

相關問題