随着.NET 4.0 beta的发布,以及.NET动态语言运行库的更广泛可用性,我想这些主题将变得“更热”。

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

每种方法的优缺点是什么?为什么我要选择一个?作为一种动态语言本身,也是一种一流的.NET语言,PowerShell为什么不同时针对DLR?

最佳答案

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

这就是DLR 1.0中缺少的部分-所有语言的共享托管故事。但是,我们确实从托管API的形式开始,我们在带有DLR和IronPython项目的CodePlex以及github上带有IronRuby的CodePlex上提供了托管API。不幸的是,我们认为我们无法在.NET 4.0的时间框架内插入这些API达到出厂质量,因此我们并未包括在内。特别是,我们希望从Powershell甚至VB和C#等其他语言中获得更多反馈,以确保我们拥有正确的API。

因此,除了IronPython和IronRuby之外,每种语言都或多或少都有自己的托管故事。但是,我们希望将来所有这些都统一起来,以便您的用户可以选择要使用的语言。但是目前,Powershell并没有针对的目标。

关于.net - PowerShell Runspace与DLR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1184360/

10-10 18:47