.net - 是否有任何 ECMAScript 的 .NET CLR/DLR 实现?

标签 .net javascript clr dynamic-language-runtime ecma262

有人知道真正的(即.. 没有汽件)ECMAScript 的目标.NET CLR/DLR 实现吗?理想情况下类似于 Rhino 对 Java 的意义。在 .NET Framework/Mono Framework 上运行的 Rhino 的可靠端口将是完美的。

我只看到了少数提到的项目,但从未见过任何曝光的项目,也从未见过任何我曾经能够在其上运行脚本的项目。这是我已经知道的:

  • MSScriptControl ActiveX Control :据我所知,这是微软最后一个真正的 ECMAScript 兼容实现(运行 JScript 5.7)。我已经与 MSScriptControl 集成,但不认为 COM 互操作是这个问题的答案。 x64 是此选项的 killer 锏。

  • JScript.NET :我不算 JScript.NET,因为它永远无法成功解析我的任何真实脚本。好像闭包有问题。

  • Managed JScript :听起来像我想要的,但它似乎死在了水里。它是 DLR 的一个主要示例实现,但后来与 SilverLight 纠缠在一起,并且自 2007 年以来似乎已不再是优先事项。有关此状态的可靠消息来源会有所帮助。

  • MyJScript :构建为 DLR 的教程实现。有人知道这个实现有多完整吗?

  • Jint :.NET 的 JavaScript 解释器。 目前还不支持 Currying 或 try-catch-finally

  • RemObjects Script for .NET :一个有趣的竞争者仍在进行中。我对他们的营销方式感到困惑,不知道它实际上是什么,但听起来它最终可能是合适的。如果有人对此有更多了解,那也会有所帮助。

  • V8 for .NET :如果有人将 V8 移植到 .NET,那就太好了。据我所知,这方面也没有很大的努力。该链接指向从托管 C++ 包装器调用它的想法。

作为背景,我希望能够在 .NET 中执行 JavaScript;即将一组脚本加载到上下文中并调用该上下文并检索执行结果。目前,我通过繁琐的 COM Interop 跳过了障碍以使用 MSScriptControl。 COM 的不一致性使得部署和确保一致执行变得非常困难。

我希望能够从 .NET 中执行相当复杂的 JavaScript 测试工具。这不是为了创建用户宏或简单的小脚本;我需要像 Rhino 这样的真正的 JavaScript 环境。如果实现在 CLR(而不是 COM)之上运行,这将真正有助于解决当前的一些问题。

最佳答案

目前,我修改了一个版本的EcmaScript.NET在我的里面 YUICompressor.NET端口(项目)。

如果你捕获 source code from here ,我已经把我修改的代码包含在项目中,你可以引用。这是我在 .NET 中找到的唯一可以处理服务器端解析 javascript 的代码源。

不幸的是,我不记得我是怎么找到它的。这是一个艰难的过程,我必须承认。我想我在某个地方找到了一些关于 Rhino(Java 代码)的引用 Mozilla 开发页面,这让我找到了 C# .NET 实现。

我不得不稍微修改它以与 YUI Compressor 人员对他们的代码分支所做的一些更改同步。所以我修改后的分支可能不是最好的..但它是我见过的最接近原始 Java 分支的分支。

EcmaScript.NET 的原始 c# 代码自 2007 年以来就没有再被修改过……至少下载页面是这样。

也许这会有所帮助??

HTH.

关于.net - 是否有任何 ECMAScript 的 .NET CLR/DLR 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1072727/

相关文章:

javascript - 如何漂亮的拓扑图

c# - C# 结构中的 INotifyPropertyChanged

c# - 编码(marshal) C# 调用 DLL 库

.net - 维护多个项目使用的类库程序集

c# - Native Assembly Binding fails for ASP.NET解决方案

c# - .NET CLR 内部调用

c++ - 使用 GetFieldProps 获取类的属性值

.net - Windows Azure Active Directory 承载身份验证

javascript - Reactjs - 将对象附加到对象

javascript - 向下舍入(总是向下,从不向上)仅当小数非常小时的数字