JavaScript解释器 for .NET

6
我有一个场景,需要在.NET应用程序中运行JavaScript解释器。这将在Windows Phone 7上运行,因此需要符合Compact Framework,并且由于它可能不会被预包装为Windows Phone,因此源代码可能有所帮助。
此外,许可证可能是一个问题。我们考虑使用Jint,它是根据MIT许可证发布的,但它使用Antlr,后者是根据BSD许可证发布的(据我所知,Jint未遵守未重新分发Antlr版权和条件)。还有其他替代方案吗?
6个回答

5

经过一些努力,我成功地将Jint改造成在WP7上可用。需要进行一些反射的重写(主要是将JS调用转换为.NET对象的调用),并修补一些错误,但最终似乎已经可以使用了。

希望在有空时间的时候能够将这些提交回Jint项目。


1
你有关于这个的任何信息吗?我正准备尝试相同的方法,如果有任何捷径可用,那将非常有帮助- me[at]slodge[dot]com - Stuart
仅供我个人记录,这是一个基于jint的分支,声称使其兼容.NET 3.5框架:https://github.com/flts/jint - SimonSimCity

4

嗯,它运行在Silverlight上,所以你可能能够将其适应为在WP7上工作。 - Dave Van den Eynde
1
它会即时编译代码。整个 Reflection Emit 命名空间在 WP7 上不可用。 - Hounshell
这已经迁移到 https://github.com/paulbartrum/jurassic。 - John B. Lambe

2
您可以使用Web浏览器控件进行JavaScript调用。它不需要额外的库。您需要做一些小的操作来使控件不可见,检索数据等,但应该可以解决问题。
或者您可以尝试这个项目:
Javascript .NET将Google的V8 JavaScript引擎集成到CLI环境中,并将其公开。Javascript .NET在运行时编译并直接从.NET代码执行脚本。它允许CLI对象直接从执行的Javascript中暴露和操作。

Javascript.Net不适用于WP7 - 它是一个C++互操作库,还需要安装V8(Chrome)才能使其工作。 - Stuart
1
我应该澄清一下,我实际上正在寻找可以在Silverlight和XNA下运行的东西,这就排除了WebBrowser控件。 - Hounshell

1

自从这个问题被提出以来,Jurassic已经发布了。这是一个.NET JavaScript解释器,可以在完整的CLR以及手机上运行(至少他们声称如此)。

我还没有开始迁移到它,所以我不知道它是否有效,但是对于任何感兴趣的人,这里有它的信息。


0

正如Bryan所说,如果需要运行JS,您可以在Web浏览器控件中运行JavaScript - 我认为这可能是您唯一的选择。

还有一个正在开发IronJS的努力 - https://github.com/fholm/IronJS - 但我不认为它会很快准备好WP7 - 也不希望它在那里完全可用。

如果您可以切换到另一种脚本语言 - Ruby - 那么IronRuby可在手机上使用(请参见iron7图片和视频以了解其功能)。


0

从注释中:“V8的包装器:将js.net.dll包含在您的项目中,您就可以直接从.Net程序中运行JavaScript。”它使用一个本地DLL,并用PInvoke进行了封装。 - Hounshell
@Hounshell:V8包装器只是默认的引擎实现。您还可以使用纯托管代码的IronJS。但是,IronJS是F#编写的,因此不确定WP7是否会对F#编译器生成的IL进行区分。 - gatapia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接