Silverlight 4应用程序中的DLR脚本

时间:2010-09-25 19:13:02

标签: silverlight scripting ironpython ironruby dynamic-language-runtime

我想为我正在处理的Silverlight 4应用程序添加一些脚本支持。我使用Visual Studio 2010在我的机器上安装了IronRuby和IronPython的最新稳定版本。我查看了使用ScriptEngine类同时使用IronRuby和IronPython的一些示例。我甚至让它在一个小的Windows窗体应用程序中工作,以确保我的代码工作。但是,我似乎无法将所需的程序集/ DLL的参考添加到我的Silverlight 4应用程序。

这是我的ScriptEngine代码:

ScriptEngine engine = Ruby.CreateEngine();
engine.Runtime.Globals.SetVariable("MainPage", this);
string code = "MainPage.txtTitle.Text = \"Hello from IronRuby!\"";
engine.Execute(code);

而且,这是我需要的使用语句:

using IronRuby;
using Microsoft.Scripting.Hosting;

当我尝试从IronRuby 1.0版本添加对以下程序集/ DLL的引用时,Visual Studio 2010不允许我添加它们并且不提供关于原因的异常消息。因此,我无法编译解决方案。

IronRuby.dll
IronRuby.Libraries.dll
IronRuby.Libraries.YAML.dll
Microsoft.Dynamic.dll
Microsoft.Scripting.Debugging.dll
Microsoft.Scripting.dll

我认为Visual Studio 2010不允许我添加程序集/ DLL的原因是因为它们是针对.NET而不是Silverlight编译的。

有谁知道我在哪里可以获得这些程序集的Silverlight 4版本,或者我正在做错的是什么?

任何帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:2)

IronRuby 1.0和IronPython 1.0的Silverlight版本隐藏在可从http://ironruby.codeplex.com/releases下载的IronRuby 1.0 for .NET 2.0 SP1(Zip存档)中。在zip中寻找silverlight \ bin。

IronRuby 1.1 Silverlight版本也可用。然而,Silverlight的IronPython 1.1无处可寻。 DLR并没有得到它应得的微软的爱,很少有文档,很难找到二进制文件,IronRuby和IronPython的未来看起来并不光明......

答案 1 :(得分:2)

请注意Koen的回答:

IronPython 2.6.x中的IronPython\Silverlight\bin。dll是.NET 3.5二进制文件(在Silverlight 4中正常工作)。 Silverlight 4的.NET 4二进制文件将与IronPython 2.7一起提供(目前位于alpha)。

答案 2 :(得分:0)

我一直在寻找与Silverlight兼容的某种脚本引擎,经过数小时的研究,我找到了一个。我还没有测试过,但我刚刚发现了一个名为PaxScript.net的项目,它支持Silverlight 3/4/5。根据作者的说法,您可以使用VB.NET,C#和Delphi.NET编写脚本。它确实生成字节码。我不知道为什么这个项目不为人所知,也许缺乏“披露”。