Referencing Google's V8 engine from a .NET app

I realize that this may not be an exact answer to your question, but I figured I would put my 2 cents worth in as I doubt to many people have tried this.

I got it to work by created a managed wrapper using mixed mode C++. There are other ways to do it, but I was going to attempt to make a full wrapper that could be used from any .NET language.

Getting the lib to compile in such a way that it could be included in a mixed mode project was a little bit of a challenge. I had to modify the runtime library (in the SConstruct file) used to /MD and /MDd so that it would be compatible with the /clr switch.

So far I have only simple scripts running as I have not implemented callbacks, custom methods, objects and such.

Here is a quick sample of what the usage looks like for one of my test apps:

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

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

It runs more complicated scripts like a base64 encoder fine as well. But for now I can only add custom items from the c++ side.

I am willing to provide more information + code if anyone is interested as I may not ever pick this project back up. But, I'm afraid it way to much code to go into a post here so we would have to find some other medium like google code or codePlex.

Edit:


OK, I've uploaded the code. I do have to put a disclaimer on this: The project is very early and I am an amateur at C++ at best so don't get your hopes up too much. Also, this project was created/done just after chrome was released so the version of v8 included may be old.

That said, here it is: http://ryanscook.com/Files/V8-DotNet.zip (21.5 MB)

In the package you'll find the following items of interest:

V8Net-Library\V8.Net\V8.Net.sln - This is the solution that has the managed C++ wrapper proj and a C# console app for testing.

Dependencies\V8 - This is my V8 code that I used to build the V8 lib.

Hope it helps!


You can try Javascript .NET:

http://javascriptdotnet.codeplex.com/

It lets you create a V8 context from .NET and register CLI objects in it so you can manipulate them and call members from the Javascript code. It compiles the Javascript at runtime.

Check it out.


Check out v8sharp. It supports executing JS inside of a .NET application. It also allows you to register .NET types with the v8 engine so that your JS code can interact with your .NET code. I am in the process of adding support for hooking function/delegate support.