run node motor jugo juegos from engine .net javascript interop v8 serverside-javascript
http://ryanscook.com/Files/V8-DotNet.zip

.net - node - v8 jugo



Hacer referencia al motor V8 de Google desde una aplicaciĆ³n.NET (7)

Microsoft está construyendo un javascript real, no el tiempo de ejecución "JScript" (junto con IronPython, IronRuby y VB10) en el CLR usando el DLR, pero no puedo encontrar descargas ni contenido para él. Quizás esto llegará con C # 4?

Estoy construyendo una aplicación .NET 3.5 y tengo la necesidad de evaluar el código JS en el servidor, básicamente un conjunto de reglas proporcionado por el usuario que puede funcionar dentro de un navegador o en el servidor. Managed JS no es una opción, porque el código JS se proporcionaría en tiempo de ejecución. Jaxer de Aptana tampoco es una opción. Así que estaba buscando utilizar una versión del motor V8 dentro de mi aplicación.

Construí la fuente con éxito en una DLL, pero esa DLL no es una biblioteca administrada y tampoco es COM. V8 es simplemente C ++.

¿Alguna idea sobre cómo interoperar con este tipo de DLL en C #? Además, estoy abierto a otras sugerencias para SpiderMonkey u otro motor JS.

Gracias por adelantado.

ACTUALIZAR:

Pude usar la solución de Ryan. Acabo de actualizar las referencias a la compilación para lo último de trunk. Funcionó muy bien. Gracias Ryan.


Por lo que escuché compilar con IJW (Managed C ++) debería funcionar, pero puedo estar realmente equivocado, nunca he tocado MC ++.


Me doy cuenta de que esta puede no ser una respuesta exacta a su pregunta, pero pensé que pondría mi valor de 2 centavos ya que dudo que muchas personas lo hayan intentado.

Lo hice funcionar creando un contenedor administrado usando el modo mixto C ++. Hay otras formas de hacerlo, pero iba a intentar crear un contenedor completo que se pudiera usar desde cualquier lenguaje .Net.

Conseguir que la lib compilara de tal manera que se pudiera incluir en un proyecto de modo mixto fue un desafío. Tuve que modificar la biblioteca de tiempo de ejecución (en el archivo SConstruct) utilizada para / MD y / MDd para que fuera compatible con el modificador / clr.

Hasta ahora solo tengo scripts simples en ejecución ya que no he implementado callbacks, métodos personalizados, objetos y demás.

Aquí hay una muestra rápida de cómo se ve el uso de una de mis aplicaciones de prueba:

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

También ejecuta scripts más complicados como un codificador base64. Pero por ahora solo puedo agregar elementos personalizados desde el lado de C ++.

Estoy dispuesto a proporcionar más información + código si alguien está interesado, ya que es posible que nunca vuelva a elegir este proyecto. Pero, me temo que es mucho código entrar en una publicación aquí, así que tendríamos que encontrar algún otro medio como google code o codePlex.

Editar:

De acuerdo, he subido el código. Debo poner un descargo de responsabilidad sobre esto: el proyecto es muy temprano y soy un aficionado en C ++ en el mejor de los casos así que no tengas tantas esperanzas. Además, este proyecto fue creado / hecho justo después de que se lanzó Chrome, por lo que la versión de v8 incluida puede ser antigua.

Dicho esto, aquí está: http://ryanscook.com/Files/V8-DotNet.zip (21.5 MB)

En el paquete encontrará los siguientes artículos de interés:

V8Net-Library / V8.Net / V8.Net.sln: esta es la solución que tiene el projector de C ++ wrapper administrado y una aplicación de consola C # para probar.

Dependencias / V8 - Este es mi código V8 que usé para construir la lib V8.

¡Espero eso ayude!


Echa un vistazo a v8sharp . Es compatible con la ejecución de JS dentro de una aplicación .NET. También le permite registrar tipos .NET con el motor v8 para que su código JS pueda interactuar con su código .NET. Estoy en el proceso de agregar soporte para la función de enganche / delegar soporte.


Puede intentar Javascript .NET:

http://javascriptdotnet.codeplex.com/

Te permite crear un contexto V8 a partir de .NET y registrar objetos CLI en él para que puedas manipularlos y llamar a miembros desde el código JavaScript. Compila el Javascript en tiempo de ejecución.

Echale un vistazo.


Puedes probar V8.NET también.

http://v8dotnet.codeplex.com/

Le permite integrar código fácilmente con V8 en un nivel más bajo que muchas otras envolturas.


Supongo que gatapia ha reemplazado js.net con jish