PowerShell Runspace与DLR

ala*_*irs 12 .net powershell scripting dynamic-language-runtime

随着.NET 4.0 beta的推出,以及.NET动态语言运行时的广泛可用性,我猜这些主题将变得"更热".

我对DLR和PowerShell之间的概念差异感到困惑.在我看来,如果我想在我的.NET应用程序中提供脚本功能,我可以使用DLR(以及在IronPython或IronRuby中启用脚本,或者可用于DLR的任何其他Iron*语言),或者托管PowerShell运行空间.

每种方法的优缺点是什么?为什么我可以选择一个而不是另一个?作为一种动态语言本身,以及一流的.NET语言,PowerShell为何也不针对DLR?

Din*_*and 12

在.NET 4.0中,DLR包含您可以考虑的"DLR v1.0".这包括调用站点缓存机制,跨语言互操作特性以及对现有LINQ表达式树的改进.这些功能对于实现语言非常有用,但不能托管语言.

这是DLR 1.0中缺少的部分 - 所有语言的共享主机故事.但我们确实已经开始使用我们在CodePlex上发布的主机API,包括DLR和IronPython项目,以及在github上使用IronRuby.不幸的是,我们并不认为我们可以在.NET 4.0时间框架内将这些API推向船舶质量,因此我们没有包含它们.特别是我们希望从其他语言(如Powershell,甚至VB和C#)获得更多反馈,以确保我们拥有正确的API.

因此,除了IronPython和IronRuby之外,每种语言或多或少都有自己的托管故事.但我们希望将来所有这些都统一起来,以便您的用户可以选择使用哪种语言.但是现在,Powershell的目标框架中没有任何内容可供选择.