2010-01-26 8 views

risposta

57

So che stai cercando qualcosa che converta in qualche modo C# direttamente in PowerShell, ma ho pensato che fosse abbastanza vicino da suggerirlo.

In PS v1 è possibile utilizzare un .NET DLL compilata

PS> $client = new-object System.Net.Sockets.TcpClient 
PS> $client.Connect($address, $port) 

In PS v2 è possibile aggiungere codice C# direttamente in PowerShell e utilizzarlo senza 'conversione' utilizzando Add-Type (copiato direttamente da msdn)

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

Posso usare le mie librerie personalizzate C# con helper e classe utils? – Kiquenet

+1

@JamesProgran Quanto è performante questo tipo di codice? –

1

Adam Discroll ha created un convertitore Roslyn-based, e ha anche fornisce una online code converter - sembra funzionare per gli script semplici, ma ha problemi con iE membri statici o classi.

+0

Ciao Akos, questo sembra essere un progetto molto interessante. Grazie per averlo condiviso! – MagicAndi

+0

Questo convertitore di codice non sembra gestire il codice precedente e il suo tracker dei problemi è pieno di lamentele simili, alcune con codice a livello di manuale. – YetAnotherRandomUser