2009-02-06 16 views
7

是否可以運行由3.5運行時而不是2.0支持的PowerShell 1.0(或2.0 CTP)?在.NET 3.5運行時/庫中使用PowerShell

我們正在建設一個.NET 3.5解決方案,我仍想使用PowerShell作爲我們的腳本引擎的計劃任務等

我不需要LINQ語法或什麼,只是3.5庫和運行時。

後續:感謝您對動態加載程序集的回覆。但讓我澄清一下我的問題:有沒有辦法運行PowerShell,以便默認運行3.5庫?例如,如果我輸入New-Object System.Xml.XmlDocument,我實際上默認獲取3.5版本?

半相關的問題:如果我有動態加載,比如,從3.5 System.Xml庫,將它覆蓋現有的符號定義,使得下一個一次我鍵入New-Object System.Xml.XmlDocument,它加載3.5版本?

回答

4

只要你讓你的全名吧,我不明白爲什麼這是行不通的:

[System.Reflection.Assembly]::Load("System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") 

我只用LINQ的因爲這是第一個浮現在腦海中。此時,ddl被加載,您可以創建/使用對象。

+0

我認爲,雖然,如果我動態加載.NET 3.5組件(包括任何,我可能會寫的),然後創建一個.NET對象(比如,System.Xml.XmlDocument)並將其傳遞給我的程序集中的一個方法,我將2.0對象傳遞給3.5對象。我對麼? – 2009-02-06 19:17:16

+0

所以要傳遞一個3.5 XmlDocument,我實際上需要導入.NET 3.5 System.Xml庫,就像你演示做System.Xml.Linq庫的方式一樣。 – 2009-02-06 19:20:14

3

PowerShell是針對2.0構建的,所以您沒有任何選擇,但至少有2.0版本。但是就像James所說的那樣,你可以通過加載相應的程序集來加載3.0和3.5的功能。 LINQ是3.5的一個很好的例子,但你也可以從PowerShell中做WPF(3.0)。不過,請注意STA和MTA,因爲只有PowerShell v2完全支持WPF(完全支持線程關聯)。

3

3.5實際上是2.0的ADD-ON。也就是說,3.5中沒有替代類;它不是替代品。 CLR(公共語言運行時)仍然是v2.0。

8

如果您的系統上安裝了3.5版本,那麼運行PowerShell時會得到這樣的結果。

PowerShell只是「requires」2.0,但3.0和3.5版本在安裝時兼容並自動轉發。在PowerShell V2中,我們實際上會查看您的版本,並「點亮」某些功能(例如,當您有3.51時,PowerShell_ISE和Out-GridView可用)。

實驗!請享用!從事!

傑弗裏Snover [MSFT] Windows管理合夥人建築師

相關問題