Me pregunto si alguien ha intentado integrar e integrar algún motor js en el entorno .net. Pude encontrar y realmente usar (después de MUCHO dolor y esfuerzo, ya que está bastante desactualizado y no está terminado) el proyecto spidermonkey-dotnet. ¿Alguien con experiencia en esta área? Motores como SquirrelFish, V8 ..
No es que no esté satisfecho con Spidermonkey de Mozilla (utilizándolo para miniframe similar a Rails para componentes personalizados dentro de la aplicación ASP.NET central), pero aún me encantaría explorar un poco más con las opciones. Las soluciones de línea de comandos no son lo que necesitaría, no puedo confiar en otra cosa que no sea CLR, necesito llamar a métodos desde / a objetos JavaScript / C #.
// c# class
public class A
{
public string Hello(string msg)
{
return msg + " whatewer";
}
}
// js snippet
var a = new A();
console.log(a.Hello('Call me')); // i have a console.log implemented, don't worry, it's not a client-side code :)
Solo para aclarar: no estoy tratando de programar la aplicación en sí en JavaScript del lado del servidor. Se usa únicamente para escribir subaplicaciones de usuario personalizadas (puede verse como algún tipo de DSL). Es mucho más fácil (y más seguro) permitir que las personas normales programen en js que C #.
fuente
El intérprete de JavaScript de código abierto Jint ( http://jint.codeplex.com ) hace exactamente lo que está buscando.
Editar:
El proyecto ha sido reescrito por completo y ahora está alojado en Github en https://github.com/sebastienros/jint
fuente
También podría estar interesado en Microsoft ClearScript que está alojado en GitHub y publicado bajo la licencia Ms-Pl.
No soy fanático de Microsoft, pero debo admitir que el soporte V8 tiene las mismas funcionalidades que Javascript.Net, y lo que es más importante, el proyecto aún se mantiene. En lo que a mí respecta, el soporte para delegados también funciona mejor que con Spidermonkey-dotnet.
ps: también es compatible con JScript y VBScript, pero no nos interesaron estas cosas viejas.
ps: es compatible con .NET 4.0 y 4.5+
fuente
Cualquiera que esté sintonizando también echa un vistazo a Jurassic:
http://jurassic.codeplex.com/
editar: esto se ha movido a github (y parece activo a primera vista)
https://github.com/paulbartrum/jurassic
fuente
Puede probar ironJS, parece prometedor, aunque está en un gran desarrollo. https://github.com/fholm/IronJS
fuente
Supongo que todavía no tengo claro qué es lo que está tratando de hacer, pero vale la pena analizar JScript.NET, aunque parece que JScript administrado puede ser más apropiado para sus necesidades (es más parecido a JavaScript que a JScript.NET) .
Personalmente, pensé que sería genial integrar V8 de alguna manera, pero no pude descargar el código fuente; Ojalá tuviera tiempo de hacer algo con eso.
fuente
Si el idioma no es un problema (cualquiera con scripts de espacio aislado), existe LUA para .NET . La versión Silverlight de .NET Framework también está protegida por afaik.
fuente
Eche un vistazo a Javascript .NET en codeplex ( http://javascriptdotnet.codeplex.com/ ) con la versión 0.3.1, hay algunas nuevas características bastante interesantes que probablemente le interesarán.
Mira un código de muestra:
fuente
Puede usar el motor Chakra en C #. Aquí hay un artículo sobre msdn que muestra cómo:
http://code.msdn.microsoft.com/windowsdesktop/JavaScript-Runtime-Hosting-d3a13880
fuente
En su lugar, se me ocurrió una solución mucho más simple.
.dll
Creé un archivo usando Javascript y luego lo compilé usando el compilador Javascript que está disponible en un símbolo del sistema del desarrollador VS2013.Una vez que tenemos el
.dll
, simplemente lo agregamos a la\Support
carpeta y luego lo referenciamos en el proyecto que necesitaba evaluar las declaraciones de Javascript.Pasos detallados para crear un
.dll
:Cree un archivo en el Bloc de notas con solo estos contenidos:
Guarde el archivo como
C:\MyEval.js
Abra un símbolo del sistema VS2005 (Inicio, Programas, VS2005, Herramientas VS2005)
Escriba
Cd\
para llegar aC:\
Tipo
Se crea un nuevo archivo llamado
MyEval.dll
.Copia
MyEval.dll
al proyecto y referencialo (también referenciaMicrosoft.Jscript.dll
).Entonces deberías poder llamarlo así:
objResult es
True
.fuente
Acabo de probar RemObjects Script para .Net .
Funciona, aunque tuve que usar una fábrica estática (
var a=A.createA();
) de JavaScript en lugar de lavar a=new A()
sintaxis. (¡La función ExposeType solo expone estadísticas!) No hay mucha documentación y la fuente está escrita con Delphi Prism, lo cual es bastante inusual para mí y el Reflector RedGate.Entonces: fácil de usar y configurar, pero no mucha ayuda para escenarios avanzados.
También tener que instalar algo en lugar de simplemente soltar los ensamblajes en un directorio es algo negativo para mí ...
fuente
La forma documentada de Microsoft de agregar extensibilidad de script a cualquier cosa es IActiveScript. Puede usar IActiveScript desde cualquier aplicación .NET para llamar a la lógica del script. La lógica puede formar parte de los objetos .NET que ha colocado en el contexto de secuencias de comandos.
Esta respuesta proporciona una aplicación que lo hace, con código:
fuente
Hay una implementación de un host de ActiveX Scripting Engine en C # disponible aquí: analizar y ejecutar JS por C #
Permite usar Javascript (o VBScript) directamente desde C #, en procesos nativos de 32 o 64 bits. La fuente completa es ~ 500 líneas de código C #. Solo tiene una dependencia implícita en la DLL del motor JScript (o VBScript) instalada.
Por ejemplo, el siguiente código:
mostrará 1.66666666666667
fuente
También hay MsieJavaScriptEngine que usa el motor de Internet Explorers Chakra
fuente
Creo que todos los principales motores JS de código abierto (JavaScriptCore, SpiderMonkey, V8 y KJS) proporcionan API de incrustación. El único con el que estoy directamente familiarizado es JavaScriptCore (que es el nombre del motor JS en el que vive SquirrelFish) que proporciona una API C pura. Si la memoria funciona (ha pasado un tiempo desde que usé .NET) .NET tiene bastante buen soporte para vincular en API de C.
Sinceramente, no estoy seguro de cómo son las API para los otros motores, pero sí sé que todas las proporcionan.
Dicho esto, dependiendo de sus propósitos, JScript.NET puede ser el mejor, ya que todos estos otros motores requerirán que los incluya con su aplicación, ya que JSC es el único que realmente se envía con un sistema operativo, pero ese sistema operativo es MacOS: D
fuente
Sé que estoy abriendo un hilo antiguo, pero he trabajado mucho en smnet (spidermonkey-dotnet). En los años recientes. Su enfoque principal de desarrollo ha sido la integración perfecta de objetos .net en el motor de spidermonkey. Admite una amplia variedad de conversiones de valores js a objetos .net. Algunos de los que incluyen delegados y eventos.
Solo digo que valdría la pena comprobar ahora que hay un desarrollo constante :). Mantengo el repositorio SVN actualizado con correcciones de errores y nuevas características. Los archivos de origen y solución de proyecto están configurados para compilarse correctamente en la descarga. Si hay algún problema al usarlo, siéntase libre de abrir una discusión.
Entiendo el deseo de tener una solución javascript administrada, pero de todos los javascript administrados que he usado, todos carecen de algunas características clave que ayuden a que sean robustos y fáciles de trabajar. Yo mismo estoy esperando que IronJS madure un poco. Mientras espero, me divierto jugando con spidermonkey-dotnet =)
proyecto spidermonkey-dotnet y página de descarga
Editar: página de wiki de documentación creada esta tarde.
fuente
Pruebe ReoScript , un intérprete de JavaScript de código abierto implementado en C #.
ReoScript hace que su aplicación pueda ejecutar JavaScript. Tiene una amplia variedad de methons de extensión como SetVariable, Function Extension, usando CLR Type, .Net Event Binding y etc.
Hola Mundo:
Y aquí hay un ejemplo de script que crea una forma de victoria y la muestra.
fuente
Use JSCRIPT.NET para obtener una biblioteca (dll) de js. Luego, haga referencia a este dll en su aplicación .NET y ya está allí. ¡HECHO!
fuente
Puede usar Rhino, un motor Javascript de Mozilla escrito en Java, y usarlo con IKVM, aquí hay algunas instrucciones
Instrucciones: https://www.codeproject.com/Articles/41792/Embedding-JavaScript-into-C-with-Rhino-and-IKVM
fuente
V8.NET es un nuevo chico en el bloque (a partir de abril de 2013) que envuelve más de cerca la funcionalidad nativa del motor V8. Permite un mayor control sobre la implementación.
fuente
Ahora es posible con
ASP.Net MVC4 Razor
View engine. el código será este:y
Razor
no es solo para MVC4 u otras aplicaciones web y puede usarlo en aplicaciones de escritorio sin conexión.fuente