当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《从.NET应用程序引用Google的V8引擎》经验,为你挑选了3个好方法。

我正在构建一个.NET 3.5应用程序,并且需要在服务器上评估JS代码 - 基本上是用户提供的规则集,可以在浏览器或服务器上运行.托管JS不是一个选项,因为JS代码将在运行时提供.Aptana的Jaxer也不是一个选择.所以我正在研究在我的应用程序中使用V8引擎的构建.

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

关于如何在C#中与这种类型的DLL互操作的任何想法?另外,我对SpiderMonkey或其他JS引擎的其他建议持开放态度.

提前致谢.

更新:

我能够使用Ryan的解决方案.我刚刚更新了对trunk的最新版本的引用.它运作得很好.谢谢瑞恩.



1> Ryan Cook..:

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

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

让lib以可以包含在混合模式项目中的方式进行编译是一个有点挑战.我不得不修改用于/ MD和/ MDd的运行时库(在SConstruct文件中),以便它与/ clr开关兼容.

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

以下是我的某个测试应用程序的使用情况的快速示例:

V8DotNet.Shell shell = new V8DotNet.Shell();

shell.ExecuteScript(@"print('V8 version is: ' + version());");

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

我愿意提供更多信息+代码,如果有人感兴趣,因为我可能永远不会选择这个项目.但是,我担心要在这里发布一些帖子,所以我们必须找到一些其他媒体,如谷歌代码或codePlex.

编辑:


好的,我上传了代码.我必须对此进行免责声明:该项目很早,我最好是C++的业余爱好者,所以不要过多地抱你的希望.此外,这个项目是在Chrome发布后创建/完成的,因此包含的v8版本可能已经过时了.

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

在包中,您将找到以下感兴趣的项目:

V8Net-Library\V8.Net\V8.Net.sln -这是具有托管C++包装器项目和用于测试的C#控制台应用程序的解决方案.

Dependencies\V8 -这是我用来构建V8 lib的V8代码.

希望能帮助到你!


那么找到我们必须做的是.打字总是很容易的.我想我缺乏C++经验会让人感到沮丧.

2> 小智..:

你可以试试Javascript .NET:

http://javascriptdotnet.codeplex.com/

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

看看这个.



3> 小智..:

查看v8sharp.它支持在.NET应用程序中执行JS.它还允许您使用v8引擎注册.NET类型,以便您的JS代码可以与您的.NET代码进行交互.我正在添加对挂钩函数/委托支持的支持.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有