只是想知道是否有人尝试过将任何js引擎嵌入到。net环境中。我可以找到并实际使用(经过大量的痛苦和努力,因为它相当过时,还没有完全完成)spidermonkey-dotnet项目。有人有这方面的经验吗?引擎像SquirrelFish, V8..

并不是说我对Mozilla的Spidermonkey不满意(在核心ASP中使用它为自定义组件提供类似rails的迷你框架)。NET应用程序),但我仍然想进一步探索这些选项。命令行解决方案不是我所需要的,我不能依赖CLR以外的任何东西,我需要从/到JavaScript/ c#对象调用方法。

// c# class
public class A
{
    public string Hello(string msg)
    {
        return msg + " whatewer";
    }
}

// js snippet
var a = new A();
console.log(a.Hello('Call me')); // i have a console.log implemented, don't worry, it's not a client-side code :)

澄清一下——我并不是试图用服务器端javascript编写应用程序本身。它仅用于编写自定义用户子应用程序(可以看作某种DSL)。让普通人用js编程比用c#更容易(也更安全)。


当前回答

我知道我打开了一个旧线程,但我已经在smnet (spidermonkey-dotnet)上做了很多工作。在最近几年。它的主要开发重点是将.net对象无缝嵌入spidermonkey引擎。它支持从js值到.net对象的各种转换。其中包括代表和活动。

只是说,现在可能值得一查,因为它有一些稳定的发展:)。 我保持SVN回购更新bug修复和新功能。源文件和项目解决方案文件已配置为在下载时成功构建。如果在使用过程中有任何问题,请随时与我们讨论。

我确实理解人们对托管javascript解决方案的渴望,但在我使用过的所有托管javascript中,它们都非常缺乏一些关键特性,这些特性有助于使它们既健壮又易于使用。我自己也在等待IronJS成熟一点。当我等待的时候,我玩spidermonkey-dotnet =)

Spidermonkey-dotnet项目和下载页面

编辑:今天下午创建了文档维基页面。

其他回答

我相信所有主要的开源JS引擎(JavaScriptCore、SpiderMonkey、V8和KJS)都提供了嵌入api。我唯一真正熟悉的是JavaScriptCore(这是SquirrelFish所在的JS引擎的名称),它提供了一个纯C API。如果没记错的话(自从我使用。net已经有一段时间了)。net在C API中对链接提供了相当好的支持。

老实说,我不确定其他引擎的API是什么样的,但我知道它们都提供了API。

也就是说,这取决于你的目的。NET可能是最好的,因为所有这些其他引擎都需要你将它们包含在你的应用程序中,因为JSC是唯一一个实际附带操作系统的引擎,但这个操作系统是MacOS:D

我想我仍然不清楚你要做的是什么,但是JScript。NET可能值得研究,尽管Managed JScript似乎更适合您的需求(它更像JavaScript而不是JScript.NET)。

就我个人而言,我认为以某种方式集成V8会很酷,但我没有下载源代码;真希望我有时间用它做点什么。

微软有文档记载的向任何东西添加脚本扩展性的方法是IActiveScript。你可以在任何。net应用中使用IActiveScript来调用脚本逻辑。逻辑可以在您放入脚本上下文中的. net对象上聚会。

这个答案提供了一个应用程序,它的代码:

IE10 Chakra JScript引擎是否可以从c#中独立访问?

V8。NET是这个领域的新成员(2013年4月),它更紧密地封装了原生V8引擎的功能。它允许对实现进行更多的控制。

您可以在c#中使用Chakra引擎。下面是msdn上的一篇文章:

http://code.msdn.microsoft.com/windowsdesktop/JavaScript-Runtime-Hosting-d3a13880