从.NET应用引用Google的V8引擎

我正在构build一个.NET 3.5应用程序,并且需要评估服务器上的JS代码 – 基本上用户提供的规则集可以在浏览器或服务器上工作。 托pipe的JS不是一个选项,因为JS代码将在运行时提供。 Aptana的Jaxer也不是一种select。 所以我正在考虑在我的应用程序中使用V8引擎的构build。

我成功地将源代码构build到DLL中,但该DLL不是托pipe库,也不是COM。 V8只是普通的C ++。

任何想法如何与C#中的这种types的DLL互操作? 此外,我打开其他SpiderMonkey或其他JS引擎的build议。

提前致谢。

更新:

我能够使用瑞安的解决scheme。 我只是更新了从中继到最新版本的参考。 它运作良好。 谢谢瑞安。

我意识到这可能不是你的问题的确切答案,但我想我会把我的2美分的价值,因为我怀疑很多人都试过这个。

我通过使用混合模式C ++创build了一个托pipe包装来实现它。 还有其他方法可以做到这一点,但是我打算尝试使用任何.Net语言来制作一个完整的包装器。

让lib编译成可以包含在混合模式项目中的方式有​​点难度。 我必须修改用于/ MD和/ MDd的运行时库(在SConstruct文件中),以便与/ clr开关兼容。

到目前为止,我只有简单的脚本运行,因为我没有实现callback,自定义方法,对象等。

下面是我的一个testing应用程序的使用情况的快速示例:

V8DotNet.Shell shell = new V8DotNet.Shell(); shell.ExecuteScript(@"print('V8 version is: ' + version());"); 

它运行更复杂的脚本,如base64编码器也很好。 但现在我只能从c ++端添加自定义项目。

我愿意提供更多的信息+代码,如果有人感兴趣,因为我可能不会select这个项目备份。 但是,恐怕有很多代码需要在这里发布,所以我们必须find一些其他的媒体,比如google code或者codePlex。

编辑:


好的,我已经上传了代码。 我必须在此声明一个免责声明: 该项目是非常早的,我是一个业余的C + +所以不要让你的希望高。 另外,这个项目是在chrome发布之后创build/完成的,所以v8的版本可能会比较旧。

这就是说,这里是: http : //ryanscook.com/Files/V8-DotNet.zip (21.5 MB)

在包装中,您会发现以下有趣的内容:

V8Net-Library \ V8.Net \ V8.Net.sln –这是具有托pipeC ++包装程序和C#控制台应用程序进行testing的解决scheme。

依赖关系\ V8 –这是我用来构buildV8库的V8代码。

希望能帮助到你!

你可以尝试使用Javascript .NET:

http://javascriptdotnet.codeplex.com/

它允许您从.NET创buildV8上下文,并在其中注册CLI对象,以便您可以操作它们并从Javascript代码中调用成员。 它在运行时编译Javascript。

一探究竟。

看看v8sharp 。 它支持在.NET应用程序中执行JS。 它还允许你用v8引擎注册.NETtypes,这样你的JS代码就可以和你的.NET代码交互了。 我正在添加对hooking函数/委托支持的支持。

微软正在使用DLR在CLR上构build一个真正的javascript(而不是“JScript”)运行时 (以及IronPython,IronRuby和VB10),但是我找不到任何下载或内容。 也许这将与C#4?

从我听到的编译IJW(托pipeC + +)应该只是工作 – 但我可能是错的,我从来没有碰过MC ++。

我猜gatapia用jish取代了js.net

你也可以试试V8.NET。

http://v8dotnet.codeplex.com/

它使您可以轻松地将代码与V8集成在比其他许多包装器更低的层次上。