Incorporar o motor de JavaScript into.NET [fechado]

Só queria saber se alguém já tentou incorporar e integrar qualquer motor js no ambiente. net. Eu poderia encontrar e realmente usar (depois de um Lote de dor e esforço, uma vez que está bastante desactualizado e não está completamente terminado) projeto spidermonkey-dotnet. Alguém com experiência nesta área? Motores como SquirrelFish, V8..

Não que eu não esteja satisfeito com a chave de aranha da Mozilla (usando-a para Carris como miniframework para componentes personalizados dentro do núcleo ASP.NET aplicação), mas eu ainda gostaria de explorar um pouco mais com as opções. As soluções de linha de comando não são o que eu preciso, Eu não posso confiar em nada mais do que CLR, eu preciso chamar métodos de/para Javascript/C# objetos.

// 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 :)

só para esclarecer - não estou a tentar programar a própria aplicação no javascript do lado do servidor. É usado apenas para escrever sub-aplicações personalizadas do usuário (pode ser visto como algum tipo de DSL). É muito mais fácil (e mais seguro) permitir o normal pessoas programando em js que c#.

Author: aprilchild, 2008-10-06

22 answers

Try Javascript .NET. Ele está hospedado no GitHub foi originalmente hospedado no CodePlex, aqui)

Discussão dos projectos: http://javascriptdotnet.codeplex.com/discussions

Implementa o Google V8. Você pode compilar e executar JavaScript diretamente do Código. net com ele, e fornecer objetos CLI para ser usado pelo código JavaScript também. Ele gera código nativo de JavaScript.

 93
Author: Michel Boissé, 2015-07-08 11:23:37

O interpretador de JavaScript de código aberto ( http://jint.codeplex.com faz exactamente o que procuras.

Editar:
O projeto foi inteiramente reescrito e agora está hospedado no Github em https://github.com/sebastienros/jint

 78
Author: Sébastien Ros - MSFT, 2014-03-12 17:23:19

Você também pode estar interessado em Microsoft ClearScript que está hospedado no GitHub e publicado sob a licença Ms-Pl.

Eu não sou nenhum fã da Microsoft, mas devo admitir que o suporte V8 tem aproximadamente as mesmas funcionalidades que Javascript.Net, e mais importante, o projeto ainda é mantido. No que me diz respeito, o apoio aos delegados também funciona melhor do que com Spidermonkey-dotnet.

Ps: ele também suporta JScript e VBScript mas nós não estávamos interessado por estas coisas velhas.

Ps: é compatível com. net 4. 0 e 4. 5+

 46
Author: JB., 2017-08-11 17:41:01
Qualquer um que esteja a ver o Jurássico também.

Http://jurassic.codeplex.com/

Editar: isto mudou-se para o github (e parece activo à primeira vista)

Https://github.com/paulbartrum/jurassic

 37
Author: bbqchickenrobot, 2016-08-21 15:22:26
Pode tentar ironJS, parece promissor, embora esteja em desenvolvimento. https://github.com/fholm/IronJS
 8
Author: GiantSquid, 2011-01-23 10:40:27

Eu acho que eu ainda estou confusa sobre o que é que você está tentando fazer, mas JScript.NET pode ser a pena ver, apesar de Conseguiu JScript parece que ele pode ser mais apropriado para as suas necessidades (é mais como JavaScript que JScript.NET).

Pessoalmente, eu pensei que seria legal integrar o V8 de alguma forma, mas eu não consegui passar do download do código fonte; gostaria de ter tempo para realmente fazer algo com ele.
 7
Author: Jason Bunting, 2008-10-05 23:01:45

Se a língua não for um problema (qualquer 'script' com 'Sandbox'), então existe LUA for. Net. a versão do 'Silverlight' do 'framework'. net também é 'sandboxed afaik'.

 5
Author: Chris S, 2009-01-22 14:48:46
Pode usar o motor de Chakra em C#. Aqui está um artigo sobre msdn que mostra como:

Http://code.msdn.microsoft.com/windowsdesktop/JavaScript-Runtime-Hosting-d3a13880

 5
Author: justin.m.chase, 2014-01-16 16:22:25
Em vez disso, arranjei uma solução muito mais simples.

Construí um ficheiro .dll usando Javascript e depois compilei-o usando o compilador Javascript que está disponível numa linha de comandos de desenvolvimento VS2013.

Uma vez que temos o .dll basta adicioná-lo à pasta \Support e, em seguida, referenciá-lo no projeto que precisava Evalar declarações Javascript.

Passos detalhados para criar um .dll:

  1. Crie um ficheiro no bloco de notas com apenas estes conteúdo:

    class EvalClass { function Evaluate(expression: String) { return eval(expression); } } 
    
  2. Gravar o ficheiro como C:\MyEval.js

  3. Abrir uma linha de comandos VS2005 (Iniciar, Programas, Ferramentas VS2005, VS2005))

  4. Tipo Cd\ para chegar C:\

  5. Tipo

    jsc /t:library C:\MyEval.js
    
  6. Um novo arquivo é criado chamado MyEval.dll.

  7. Copy MyEval.dll to the project and reference it (also reference Microsoft.Jscript.dll).

  8. Então deves poder chamar-lhe ... isto:
    Dim jScriptEvaluator As New EvalClass
    Dim objResult As Object
    objResult = jScriptEvaluator.Evaluate(“1==1 && 2==2”)
    

ObjResult is True.

 5
Author: sinanguler, 2015-08-19 16:53:05
Olha para o Javascript. NET no codeplex ([[3]} http://javascriptdotnet.codeplex.com/ com a versão 0.3.1, há algumas novidades que lhe vão interessar.

Verifica um código de amostra:

// Initialize the context
JavascriptContext context = new JavascriptContext();

// Setting the externals parameters of the context
context.SetParameter("console", new SystemConsole());
context.SetParameter("message", "Hello World !");
context.SetParameter("number", 1);

// Running the script
context.Run("var i; for (i = 0; i < 5; i++) console.Print(message + ' (' + i + ')'); number += i;");

// Getting a parameter
Console.WriteLine("number: " + context.GetParameter("number"));
 4
Author: Deacon Frost, 2010-08-24 20:27:13

Script # compila C# para js e é o Filho do cérebro de um dos ASP.Net equipa. Rick Strahl também tem alguns posts em incorporar js como motor de tempo de execução para a avaliação da expressão.

 4
Author: David Robbins, 2013-07-19 13:37:58
Acabei de tentar. refazer o Script do. Net.

Funciona, embora eu tivesse que usar uma fábrica estática ({[[0]}) de JavaScript em vez da sintaxe var a=new A(). (A função ExposeType só expõe estática!) Não há muita documentação e a fonte é escrita com Delphi Prism, o que é bastante incomum para mim e o refletor RedGate.

Então: Fácil de usar e configurar, mas não ajuda muito para cenários avançados.

Também ter de instalar algo em vez disso deixar as assembleias num directório é negativo para mim...

 4
Author: sanosdole, 2014-01-07 13:49:12

A forma documentada da Microsoft de adicionar extensibilidade de script a qualquer coisa é IActiveScript. Você pode usar o IActiveScript de dentro da app anyt. NET, para chamar a lógica do script. A lógica pode se encaixar em objetos. NET que você colocou no contexto de scripting.

Esta resposta fornece uma aplicação que o faz, com o código:

 2
Author: Cheeso, 2017-05-23 11:54:53

Existe uma implementação de uma programação ActiveX máquina Em C# disponível aqui: processar e executar JS por C#

Ele permite usar Javascript (ou VBScript) diretamente de C#, em processos nativos de 32-bit ou 64-bit. A fonte completa é ~500 linhas de código C#. Ele só tem uma dependência implícita do motor DLL instalado JScript (ou VBScript).

Por exemplo, o seguinte código:

Console.WriteLine(ScriptEngine.Eval("jscript", "1+2/3"));

Irá mostrar 1.66666666666667

 2
Author: Simon Mourier, 2017-05-23 12:26:05

Existe tambémMsieJavaScriptEngine que utiliza o motor Chakra dos exploradores da Internet

 2
Author: Simon, 2014-02-12 02:09:00

Sei que estou a abrir um tópico antigo, mas já trabalhei muito no smnet (spidermonkey-dotnet). Nos últimos anos. O seu principal foco de desenvolvimento tem sido a incorporação sem descontinuidades de objetos.Net no motor spidermonkey. Ele suporta uma grande variedade de conversões de valores js para objetos.net. Alguns deles, incluindo delegados e eventos.

Só estou a dizer que talvez valha a pena verificar agora que há um desenvolvimento constante nele. Eu mantenho o acordo SVN atualizado com correcções de erros e novas funcionalidades. Os arquivos de solução de código e projeto são configurados para construir com sucesso no download. Se houver algum problema usando - o, Sinta-se livre para abrir uma discussão.

Eu entendo o desejo de ter uma solução JavaScript gerenciada, mas de todos os JavaScript gerenciados que eu usei eles são todos muito carentes de algumas características chave que ajudam a torná-los robustos e fáceis de trabalhar. Eu próprio estou à espera que o IronJS amadureça um pouco. Enquanto espero, divirto-me a brincar com spidermonkey-dotnet =)

Projecto Spidermonkey-dotnet e página de recepção

Editar: criou a página wiki de documentação esta tarde.

 1
Author: SilverX, 2011-08-31 01:29:27

Tente ReoScript , um interpretador de JavaScript de código aberto implementado em C#.

O ReoScript faz com que a sua aplicação possa executar o JavaScript. Ele tem uma grande variedade de metons de extensão, como Setvariável, extensão de função, usando o tipo CLR, ligação de Evento.Net e etc.

Olá Mundo:

ScriptRunningMachine srm = new ScriptRunningMachine();
srm.Run(" alert('hello world!'); ");
E aqui está um exemplo de script que cria uma winform e a mostra.
import System.Windows.Forms.*;        // import namespace

var f = new Form();                   // create form
f.click = function() { f.close(); };  // close when user clicked on form

f.show();                             // show 
 1
Author: Jing, 2013-02-12 08:19:23

Acredito que todos os principais motores JS opensource (JavaScriptCore, SpiderMonkey, V8 e KJS) fornecem APIs de incorporação. O único que eu estou familiarizado diretamente com é JavaScriptCore (que é o nome do motor JS em que o SquirrelFish vive) que fornece uma API C pura. Se a memória não falha (já passou algum tempo desde que eu usei. Net). Net tem um suporte bastante bom para ligar em C API's.

Sinceramente, não sei como é a API para os outros motores, mas sei que eles ... todos os fornecem. Dito isto, dependendo dos seus propósitos JScript.NET pode ser melhor, como todos estes outros motores vai exigir que você incluí-los com o seu aplicativo, como JSC é o único que realmente navios com um SO, mas que OS é MacOS: D
 0
Author: olliej, 2008-10-06 03:57:52

Utilizar JSCRIPT.NET para obter uma biblioteca (dll) do js . Em seguida, consulte este dll em sua aplicação. NET e você está apenas lá. Feito!

 0
Author: , 2009-03-06 20:25:47

V8.NET é uma criança nova no bloco (a partir de abril de 2013) que envolve mais de perto a funcionalidade nativa do motor V8. Ele permite um maior controle sobre a implementação.

 0
Author: James Wilkins, 2013-05-29 21:30:47

Você pode usar Rhino um motor JavaScript Mozilla escrito em Java, e usá - lo com IKVM, Aqui estão algumas instruções

Instructions:https://www.codeproject.com/Articles/41792/Embedding-JavaScript-into-C-with-Rhino-and-IKVM

 0
Author: luiseduardohd, 2017-05-10 17:59:38
É possível agora com o motor de visualização. o código será este:
// c# class
public class A
{
    public string Hello(string msg)
    {
        return msg + " whatewer";
    }
}

// js snippet
<script type="text/javascript">
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 :)
</script>

E Razor não é apenas para MVC4 ou outras aplicações web e você pode usá-lo em aplicações desktop offline.

 -5
Author: ahmadali shafiee, 2012-08-23 17:51:52