c# - Incorporando o mecanismo JavaScript ao .NET




11 Answers

Tente Javascript . Está hospedado no GitHub Ele foi originalmente hospedado no CodePlex, http://javascriptdotnet.codeplex.com/ )

Discussões do projeto: http://javascriptdotnet.codeplex.com/discussions

Implementa o Google V8. Você pode compilar e executar o JavaScript diretamente do código .NET com ele e fornecer objetos CLI para serem usados ​​também pelo código JavaScript. Ele gera código nativo do JavaScript.

apenas imaginando se alguém já tentou incorporar e realmente integrar qualquer mecanismo js ao ambiente .net. Eu poderia encontrar e realmente usar (depois de muita dor e esforço, já que é muito desatualizado e não terminou) projeto spidermonkey-dotnet. Alguém com experiência nesta área? Motores como SquirrelFish, V8 ..

Não que eu não esteja satisfeito com o Spidermonkey da Mozilla (usando-o para miniframework do tipo Rails para componentes customizados dentro do núcleo do aplicativo ASP.NET), mas eu ainda adoraria explorar um pouco mais com as opções. As soluções de linha de comando não são o que eu preciso, não posso confiar em nada além do CLR, preciso chamar métodos de / para 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 :)

Só para esclarecer - eu não estou tentando realmente programar o aplicativo em si no javascript do lado do servidor. É usado apenas para escrever sub-aplicativos de usuários personalizados (pode ser visto como algum tipo de DSL). É muito mais fácil (e seguro) permitir que pessoas normais programem em js que C #.




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

Eu não sou fanboy da Microsoft, mas devo admitir que o suporte V8 tem as mesmas funcionalidades do Javascript.Net, e mais importante, o projeto ainda é mantido. Tanto quanto eu estou preocupado, o suporte para os delegados também funciona melhor do que com Spidermonkey-dotnet.

ps: Ele também suporta JScript e VBScript, mas não estávamos interessados ​​por este material antigo.

ps: É compatível com o .NET 4.0 e 4.5+







Se a linguagem não for um problema (qualquer script baseado em sandbox), haverá LUA para .NET . A versão do Silverlight do .NET framework também é afaik em sandbox.




Eu criei uma solução muito mais simples.

Eu construí um arquivo .dll usando JavaScript e, em seguida, compilado usando o compilador de JavaScript que está disponível em um prompt de comando do desenvolvedor VS2013.

Uma vez que temos o .dll , basta adicioná-lo à pasta \Support e, em seguida, referenciá-lo no projeto que precisava avaliar as instruções JavaScript.

Etapas detalhadas para criar um .dll :

  1. Crie um arquivo no Bloco de Notas apenas com estes conteúdos:

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

  3. Abra um Prompt de Comando do VS2005 (Iniciar, Programas, VS2005, Ferramentas do VS2005)

  4. Digite Cd\ para ir para C:\

  5. Tipo

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

  7. Copie MyEval.dll para o projeto e referência-lo (também referência Microsoft.Jscript.dll ).

  8. Então você deve poder chamá-lo assim:

    Dim jScriptEvaluator As New EvalClass
    Dim objResult As Object
    objResult = jScriptEvaluator.Evaluate(“1==1 && 2==2”)

objResult é True .




Script# compila C # para js e é o filho do cérebro de uma das equipes do ASP.Net. Rick Strahl também tem alguns posts sobre incorporação de js como mecanismo de tempo de execução para avaliação de expressão.







Há também o MsieJavaScriptEngine que usa o mecanismo do Internet Explorer Chakra.




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

O ReoScript faz com que seu aplicativo possa executar o JavaScript. Possui uma ampla variedade de métodos de extensão, como SetVariable, Function Extension, usando CLR Type, .Net Event Binding 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 



Use o JSCRIPT.NET para obter uma biblioteca (dll) do js. Em seguida, faça referência a essa dll em seu aplicativo .NET e você está aí. FEITO!




V8.NET é um novo garoto no bloco (a partir de abril de 2013) que envolve mais de perto a funcionalidade do mecanismo V8 nativo. Isso permite mais controle sobre a implementação.




Related

c# javascript spidermonkey