apenas imaginando se alguém já tentou incorporar e realmente integrar algum mecanismo js ao ambiente .net. Eu poderia encontrar e realmente usar (depois de muita dor e esforço, já que está bastante desatualizado e ainda não terminou) o 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 semelhante ao Rails para componentes personalizados dentro do aplicativo ASP.NET principal), mas eu ainda adoraria explorar um pouco mais as opções. As soluções de linha de comando não são o que eu precisaria, não posso confiar em nada além de 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 :)
Apenas para esclarecer - não estou tentando programar o aplicativo em javascript do servidor. É usado apenas para escrever subaplicativos de usuário personalizados (pode ser visto como algum tipo de DSL). É muito mais fácil (e seguro) permitir que pessoas normais programem em js do que em c #.
fonte
O intérprete de código aberto JavaScript Jint ( http://jint.codeplex.com ) faz exatamente o que você está procurando.
Edit:
O projeto foi totalmente reescrito e agora está hospedado no Github em https://github.com/sebastienros/jint
fonte
Talvez você também esteja interessado no Microsoft ClearScript, hospedado no GitHub e publicado sob a licença Ms-Pl.
Não sou fanboy da Microsoft, mas devo admitir que o suporte à V8 possui as mesmas funcionalidades que o Javascript.Net e, mais importante, o projeto ainda é mantido. Para mim, o suporte aos delegados também funciona melhor do que com o Spidermonkey-dotnet.
ps: Ele também suporta JScript e VBScript, mas não estávamos interessados nesse material antigo.
ps: é compatível com .NET 4.0 e 4.5+
fonte
Qualquer pessoa que esteja apenas de olho no Jurassic também:
http://jurassic.codeplex.com/
edit: mudou para o github (e parece ativo à primeira vista)
https://github.com/paulbartrum/jurassic
fonte
Você pode experimentar o ironJS, parece promissor, embora esteja em desenvolvimento pesado. https://github.com/fholm/IronJS
fonte
Acho que ainda não estou claro sobre o que você está tentando fazer, mas vale a pena examinar o JScript.NET, embora o JScript gerenciado pareça ser mais adequado às suas necessidades (é mais como JavaScript do que JScript.NET) .
Pessoalmente, achei que seria legal integrar o V8 de alguma forma, mas não consegui baixar o código-fonte; gostaria de ter tempo para realmente fazer algo com isso.
fonte
Se o idioma não for um problema (qualquer script com caixa de areia), haverá o LUA for .NET . A versão Silverlight da estrutura .NET também está na caixa de areia.
fonte
Ei, dê uma olhada no Javascript .NET no codeplex ( http://javascriptdotnet.codeplex.com/ ) com a versão 0.3.1, existem alguns novos recursos bastante interessantes que provavelmente lhe interessarão.
Confira um código de exemplo:
fonte
Você pode usar o mecanismo Chakra em C #. Aqui está um artigo no msdn mostrando como:
http://code.msdn.microsoft.com/windowsdesktop/JavaScript-Runtime-Hosting-d3a13880
fonte
Eu vim com uma solução muito mais simples.
.dll
Criei um arquivo usando Javascript e o compilei usando o compilador Javascript, disponível em um prompt de comando do desenvolvedor do VS2013.Assim que tivermos
.dll
, basta adicioná-lo à\Support
pasta e referenciá-lo no projeto, o qual é necessário para avaliar as declarações Javascript.Etapas detalhadas para criar um
.dll
:Crie um arquivo no bloco de notas com apenas este conteúdo:
Salve o arquivo como
C:\MyEval.js
Abra um prompt de comando do VS2005 (Iniciar, Programas, VS2005, VS2005 Tools)
Digite
Cd\
para chegar aC:\
Tipo
Um novo arquivo é criado com o nome
MyEval.dll
.Copie
MyEval.dll
para o projeto e faça referência a ele (também faça referênciaMicrosoft.Jscript.dll
).Então você poderá chamá-lo assim:
objResult é
True
.fonte
Eu apenas tentei o RemObjects Script para .Net .
Funciona, embora eu tenha que usar uma fábrica estática (
var a=A.createA();
) do JavaScript em vez davar a=new A()
sintaxe. (A função ExposeType apenas expõe estática!) Não há muita documentação e a fonte é escrita com Delphi Prism, o que é bastante incomum para mim e para o RedGate Reflector.Portanto: fácil de usar e configurar, mas não ajuda muito em cenários avançados.
Também ter que instalar algo em vez de simplesmente soltar os assemblies em um diretório é negativo para mim ...
fonte
A maneira documentada da Microsoft de adicionar extensibilidade de script a qualquer coisa é IActiveScript. Você pode usar o IActiveScript de qualquer aplicativo .NET para chamar a lógica de script. A lógica pode fazer parte dos objetos .NET que você inseriu no contexto de script.
Esta resposta fornece um aplicativo que faz isso com o código:
fonte
Existe uma implementação de um Host do Mecanismo de Script ActiveX em C # disponível aqui: analise e execute JS por C #
Ele permite usar Javascript (ou VBScript) diretamente do C #, em processos nativos de 32 ou 64 bits. A fonte completa é de ~ 500 linhas de código C #. Ele possui apenas uma dependência implícita na DLL do mecanismo JScript (ou VBScript) instalado.
Por exemplo, o seguinte código:
exibirá 1.66666666666667
fonte
Há também o MsieJavaScriptEngine, que usa o mecanismo do Internet Explorer Chakra
fonte
Eu acredito que todos os principais mecanismos JS de código aberto (JavaScriptCore, SpiderMonkey, V8 e KJS) fornecem APIs de incorporação. O único com o qual estou diretamente familiarizado é o JavaScriptCore (que é o nome do mecanismo JS no qual o SquirrelFish vive), que fornece uma API C pura. Se a memória serve (já faz algum tempo desde que eu usei o .NET), o .NET tem um suporte bastante bom para vincular as APIs C.
Sinceramente, não tenho certeza de como são as APIs dos outros mecanismos, mas sei que todas elas os fornecem.
Dito isso, dependendo dos seus objetivos, o JScript.NET pode ser o melhor, pois todos esses outros mecanismos exigirão que você os inclua no seu aplicativo, pois o JSC é o único que realmente é fornecido com um sistema operacional, mas esse é o MacOS: D
fonte
Eu sei que estou abrindo um tópico antigo, mas já trabalhei muito no smnet (spidermonkey-dotnet). Nos últimos anos. Seu foco principal de desenvolvimento foi a incorporação contínua de objetos .net no mecanismo spidermonkey. Ele suporta uma ampla variedade de conversões de valores js para objetos .net. Alguns deles, incluindo delegados e eventos.
Apenas dizendo que pode valer a pena verificar agora que há algum desenvolvimento constante nele :). Eu mantenho o repositório SVN atualizado com correções de bugs e novos recursos. Os arquivos de solução de origem e projeto são configurados para criar com êxito no download. Se houver algum problema ao usá-lo, sinta-se à vontade para abrir uma discussão.
Entendo o desejo de ter uma solução de javascript gerenciado, mas de todos os javascript gerenciados que usei, faltam alguns recursos importantes que ajudam a torná-los robustos e fáceis de trabalhar. Eu mesmo estou esperando que o IronJS amadureça um pouco. Enquanto espero, me divirto brincando com spidermonkey-dotnet =)
projeto spidermonkey-dotnet e página de download
Edit: criou a página wiki da documentação esta tarde.
fonte
Experimente o ReoScript , um interpretador JavaScript de código aberto implementado em C #.
O ReoScript faz com que seu aplicativo possa executar JavaScript. Possui uma grande variedade de métodos de extensão, como SetVariable, Function Extension, usando CLR Type, .Net Event Binding e etc.
Olá Mundo:
E aqui está um exemplo de script que cria um winform e o mostra.
fonte
Use o JSCRIPT.NET para obter uma biblioteca (dll) dos js. Em seguida, faça referência a esta dll no seu aplicativo .NET e você estará lá. FEITO!
fonte
Você pode usar o Rhino, um mecanismo Javascript da Mozilla, escrito em Java e usá-lo com o IKVM, aqui estão algumas instruções
Instruções: https://www.codeproject.com/Articles/41792/Embedding-JavaScript-into-C-with-Rhino-and-IKVM
fonte
O V8.NET é uma novidade no bloco (em abril de 2013) que envolve mais de perto a funcionalidade do mecanismo V8 nativo. Permite mais controle sobre a implementação.
fonte
É possível agora com o
ASP.Net MVC4 Razor
mecanismo de exibição. o código será este:e
Razor
não é apenas para MVC4 ou outros aplicativos da web e você pode usá-lo em aplicativos de desktop offline.fonte