2016-08-20 52 views
1

現在,PowerShell是open sourcedLinux上可用,任何人都知道如何在Linux下添加.Net程序集?如果可能的話?Linux上的PowerShell - 如何加載使用.Net程序集?

我已經在Ubuntu 16.04上安裝了PS,如here,並安裝了Mono,如here

終端上運行PS後,該行出人意料地工作得很好:

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

沒有錯誤等等

然而,當我嘗試:

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

我得到此錯誤:

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 

那個提示? 這是一個錯誤,因爲在Linux上的PowerShell仍然是「阿爾法」?

BTW - 在Windows上的所有工作就好了... ...

+0

Miguel de Icaza證實它不適用於Mono,因此您現在只能使用.NET Core運行它。 –

+0

是否提及該確認? –

回答

3

的PowerShell對Linux是基於CoreCLR而單是CLR /全框架的克隆。你使用的程序集是一個完整的框架,不能在CoreCLR中加載,因爲它基於mscorlib而不是System.Runtime。

在即將到來的.NET Standard 2.0中,將會有一種解決方法(可能)。

如果不使用newtonsoft.json,Json序列化在PowerShell中應該是本地的。