8

私は、IronPython、IronRuby、および (できれば) PowerShell をホストする ac# アプリで遊んでいます。IronPython と IronRuby は完全に DLR 上に構築されているため、それらを使用するための API はほとんど同じです。

IronPython.Hosting.Python.CreateEngine()

IronRuby.Ruby.CreateEngine()

どちらもMicrosoft.Scripting.Hosting.ScriptEngineのインスタンスを作成します。PowerShell 3.0 に ScriptEngine の作成を強制する希望はありますか? PowerShell 3.0以外は、以前のバージョンよりも多くのDLR上に構築されているようです( http://huddledmasses.org/powershell-3-finally-on-the-dlrを参照) 。

以下で作成した PowerShell エンジンを ScriptEngine にキャストできるようには見えません。

System.Management.Automation.PowerShell.Create()

本当に同じ API を介して PowerShell を処理したい場合は、PowerShell ホストをラップする独自の ScriptEngine を作成する必要があると思います。

4

2 に答える 2

4

PowerShell V3 は実際に DLR の一部を使用しますが、.Net Frameworks V4 で出荷された部分のみを使用します。DLR プロジェクトには、Microsoft.Scripting.Hosting.ScriptEngine など、.Net に含まれていない多くの便利な API がありました。

PowerShell が ScriptEngine API を実装したい場合、PowerShell はそれらの API を PowerShell の一部として出荷する必要がありました。PowerShell チームは、これらの API の所有権を取得するつもりはありませんでした。

したがって、ScriptEngine を実装する場合は、PowerShell を独自のコードでラップする必要があると想定するのは正しいことです。

于 2013-09-24T00:02:10.830 に答える
-1

PowerShell は dotnet アセンブリで動作し、管理者プロファイルを持っていて、高度な指示を作成したい場合に非常に興味深いものになります。しかし、あなたは開発者なので、PowerShell をラップする理由は、コードからすべての dotnet アセンブリにアクセスできるからです。 PowerShellをラップする代わりに欲しい

于 2012-07-22T07:51:34.943 に答える