首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从V8应用程序引用谷歌的.NET引擎

从V8应用程序引用谷歌的.NET引擎
EN

Stack Overflow用户
提问于 2008-12-10 17:47:07
回答 9查看 17.3K关注 0票数 35

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

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

对于如何在C#中与这种类型的动态链接库进行交互,有什么想法吗?此外,我对SpiderMonkey或另一个JS引擎的其他建议持开放态度。

提前谢谢。

更新:

我用了莱恩的解决方案。我刚刚更新了对构建的引用,以便从主干中获得最新版本。效果很好。谢谢瑞恩。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-12-10 19:29:02

我意识到这可能不是你的问题的确切答案,但我想我会投入我的2美分,因为我怀疑许多人尝试过这一点。

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

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

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

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

代码语言:javascript
复制
V8DotNet.Shell shell = new V8DotNet.Shell();

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

它还可以运行更复杂的脚本,比如base64编码器。但是现在我只能从c++端添加自定义项。

我愿意提供更多的信息+代码,如果有人感兴趣,因为我可能永远不会选择这个项目回来。但是,我恐怕要在这里发表大量的代码,这样我们就必须找到一些其他媒体,比如google代码或codePlex。

编辑:

好了,我上传了密码。我必须对此提出一个免责声明:这个项目太早了,而且我是C++的业余爱好者,所以不要太抱太大希望。此外,该项目是在chrome发布后创建/完成的,因此包含的v8版本可能已经过时。

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

在该包中,您将发现以下感兴趣的项目:

V8Net-Library\V8.Net\V8.Net.sln - -这是一种解决方案,有托管C++包装器proj和用于测试的C#控制台应用程序。 依赖项\ V8 - --这是我用来构建V8库的V8代码。

希望能帮上忙!

票数 34
EN

Stack Overflow用户

发布于 2010-07-05 22:34:49

您可以尝试Javascript .NET:

http://javascriptdotnet.codeplex.com/

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

看看这个。

票数 18
EN

Stack Overflow用户

发布于 2010-06-30 02:54:44

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

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/356948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档