7

2.0ではなく3.5ランタイムに基づくPowerShell1.0(または2.0 CTP)を実行することは可能ですか?

.NET 3.5ソリューションを構築していますが、スケジュールされたタスクなどのスクリプトエンジンとしてPowerShellを使用したいと思います。

LINQ構文などは必要ありません。3.5ライブラリとランタイムだけが必要です。

フォローアップ:アセンブリを動的にロードすることについての返信をありがとうございます。しかし、私の質問を明確にしましょう。3.5ライブラリがデフォルトで実行されるようにPowerShellを実行する方法はありますか?New-Object System.Xml.XmlDocumentたとえば、と入力すると、実際にはデフォルトで3.5バージョンを取得していますか?

半関連の質問:たとえば、 3.5からライブラリを動的にロードする必要がある場合、次に入力したときに3.5バージョンロードされるように、既存のシンボル定義をオーバーレイしますか?System.XmlNew-Object System.Xml.XmlDocument

4

4 に答える 4

8

システムに 3.5 がインストールされている場合、PowerShell を実行すると、それが得られます。

PowerShell は 2.0 のみが「必要」ですが、3.0 と 3.5 は互換性があり、インストールすると自動転送されます。PowerShell V2 では、実際に使用しているバージョンを確認し、特定の機能を「ライトアップ」します (たとえば、3.51 の場合、PowerShell_ISE と Out-GridView を使用できます)。

実験!楽しみ!従事!

Jeffrey Snover [MSFT] Windows 管理パートナー アーキテクト

于 2009-02-22T15:53:59.903 に答える
4

完全修飾名を正しく取得している限り、これが機能しない理由はわかりません。

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

それが最初に頭に浮かんだので、私はLinqのみを使用しました。その時点で、ddl がロードされ、そこからオブジェクトを作成/使用できます。

于 2009-02-06T18:55:33.450 に答える
3

3.5は事実上2.0のアドオンです。つまり、3.5には置き換えられるクラスはありません。代替品ではありません。CLR(共通言語ランタイム)は引き続きv2.0です。

于 2009-02-09T03:14:35.613 に答える
3

PowerShell は 2.0 に対して構築されているため、少なくとも 2.0 を存在させる以外に選択肢はありません。しかし、ジェームズが言うように、適切なアセンブリをロードすることで 3.0 および 3.5 の機能をロードできます。LINQ は 3.5 の良い例ですが、PowerShell から WPF (3.0) を実行することもできます。ただし、PowerShell v2 のみが WPF を完全にサポートしているため (スレッド アフィニティを完全にサポート)、WPF の STA と MTA に注意してください。

于 2009-02-06T19:26:13.983 に答える