2010-06-20 21 views
37

Soy desarrollador/arquitecto de C# .NET y entiendo que usa objetos (objetos .NET) y no solo flujos/texto.Cómo hacer referencia a ensamblados .NET usando PowerShell

Me gustaría poder usar PowerShell para llamar a métodos en mis ensamblajes .NET (biblioteca C#).

¿Cómo hago referencia a un conjunto en PowerShell y uso el conjunto?

Respuesta

41

Tome un vistazo a la entrada del blog Load a Custom DLL from PowerShell:

Tomemos, por ejemplo, una biblioteca matemática simple. Tiene un método estático Sum, y un método de instancia de producto:

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

compilar y ejecutar en PowerShell:

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

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

El vínculo no se está cargando ... – Russell

+1

El enlace está cargando aquí. Voy a actualizar mi post y copie la parte pertinente de la misma. –

+0

Gracias por el texto. :) Sé por qué no pude encontrar la respuesta cuando estaba buscando. Lo intentaré y le dejaré saber cómo voy. :) – Russell

43

Con PowerShell 2.0, se puede utilizar el construido en el cmdlet Add-Type.

Solo necesita especificar la ruta de la dll.

Add-Type -Path foo.dll 

Además, puede utilizar inline C# o VB.NET con Add-Type. El @" sintaxis es una cadena AQUÍ.

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

wow !! .. eso fue increíble, si solo podemos tener intellisense en la consola esto será aún más poderoso – mjsr

+1

Un par de opciones para PowerShell en Visual Studio: http://powerguivsx.codeplex.com/ PowerShell Plus: IDE http://powershellplus.com/ –

+2

El último ISE tiene intellisense. – MDMoore313

Cuestiones relacionadas