2016-08-20 4 views
1

Nun, da PowerShell ist open sourced und verfügbar unter Linux, weiß jemand, wie. NET Assemblys unter Linux hinzufügen? Wenn überhaupt möglich?PowerShell unter Linux - Wie Laden verwenden. Net-Baugruppen?

Ich habe PS auf Ubuntu 16.04 wie in here installiert und Mono wie in here installiert.

PS auf Terminal Nach dem Ausführen dieser Linie funktioniert überraschend gut so:

add-type -assembly "/usr/lib/mono/4.5-api/System.Web.Extensions.dll" 

Keine Fehler etc ...

Doch wenn ich versuche zu:

$js = New-Object "System.Web.Script.Serialization.JavaScriptSerializer" 

Ich erhalte Dieser Fehler:

new-object : Cannot find type [System.Web.Script.Serialization.JavaScriptSerializer]: verify that the 
assembly containing this type is loaded. 
At line:1 char:10 
+ $ps_js = new-object "System.Web.Script.Serialization.JavaScriptSerial ... 
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidType: (:) [New-Object], PSArgumentException 
    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand 

Irgendwelche Hinweise dazu? Ist es vielleicht ein Bug, weil Powershell auf Linux immer noch "Alpha" ist?

BTW - Am Fenster ist alles funktioniert ganz gut ...

+0

Miguel de Icaza hat bestätigt, dass es noch nicht mit Mono funktioniert, also können Sie es jetzt nur mit .NET Core ausführen. –

+0

Irgendwelche Hinweise auf diese Bestätigung? –

Antwort

3

Powershell auf Linux basierend auf CoreCLR wird, während Mono ein Klon des CLR/full-Framework ist. Die Assembly, die Sie verwenden, ist eine vollständige Framework-Komponente und kann nicht in CoreCLR geladen werden, da sie auf mscorlib und nicht auf System.Runtime basiert.

In einem Jahr wird es einen Workaround (vielleicht) mit dem kommenden .NET Standard 2.0 geben.

Die JSN-Serialisierung sollte in PowerShell nativ sein, wenn nicht newtonsoft.json verwenden.