Estamos escrevendo um aplicativo de desktop rico e complexo e precisamos oferecer flexibilidade nos formatos de relatórios, então pensamos em apenas expor nosso modelo de objeto a uma linguagem de script. Já era tempo que isso significava VBA (que ainda é uma opção), mas o derivado de código gerenciado VSTA (eu acho) parece ter murchado na videira.
Qual é agora a melhor escolha para uma linguagem de script incorporada no Windows .NET?
Respostas:
Usei o CSScript com resultados incríveis. Realmente reduziu a necessidade de fazer ligações e outras coisas de baixo nível em meus aplicativos com scripts.
fonte
Pessoalmente, eu usaria C # como linguagem de script. O framework .NET (e Mono, obrigado Matthew Scharley) na verdade inclui os compiladores para cada uma das linguagens .NET no próprio framework.
Basicamente, existem 2 partes para a implementação deste sistema.
Permitir que o usuário compile o código Isso é relativamente fácil e pode ser feito em apenas algumas linhas de código (embora você possa querer adicionar uma caixa de diálogo de erro, que provavelmente seria mais algumas dezenas de linhas de código, dependendo de quão utilizável você quer que seja).
Criar e usar classes contidas no assembly compilado Isso é um pouco mais difícil do que a etapa anterior (requer um pouco de reflexão). Basicamente, você deve apenas tratar o assembly compilado como um "plug-in" para o programa. Existem alguns tutoriais sobre várias maneiras de criar um sistema de plug-in em C # (o Google é seu amigo).
Eu implementei um aplicativo "rápido" para demonstrar como você pode implementar este sistema (inclui 2 scripts de trabalho!). Este é o código completo da aplicação, basta criar um novo e colar o código no arquivo "program.cs". Nesse ponto, devo me desculpar pelo grande pedaço de código que estou prestes a colar (não pretendia que fosse tão grande, mas me empolguei um pouco com meus comentários)
fonte
csscript.net
parece que é uma espécie de invólucro sobre isso. Esta é basicamente uma implementação básica. Acho que uma pergunta melhor seria "o que csscript.net faz por mim que isso não faz". Não sei o que csscript está fazendo, mas eles definitivamente sabem o que o código acima faz, eles o têm (ou algo extremamente semelhante) em sua biblioteca.IronPython . Aqui está uma visão geral de como incorporá-lo .
fonte
O mecanismo PowerShell foi projetado para ser facilmente incorporado em um aplicativo para torná-lo programável. Na verdade, o PowerShell CLI é apenas uma interface baseada em texto para o mecanismo.
Editar: consulte https://devblogs.microsoft.com/powershell/making-applications-scriptable-via-powershell/
fonte
Língua de Boo .
fonte
Minha linguagem de script de escolha seria Lua hoje em dia. É pequeno, rápido, limpo, totalmente documentado, bem suportado, tem uma grande comunidade , é usado por muitas grandes empresas do setor (Adobe, Blizzard, EA Games), definitivamente vale a pena tentar.
Para usá-lo com linguagens .NET, o projeto LuaInterface fornecerá tudo o que você precisa.
fonte
Por que não tentar C #? Mono tem um ótimo novo projeto especialmente para avaliar dinamicamente C #:
http://tirania.org/blog/archive/2008/Sep-10.html
fonte
IronRuby como mencionado acima. Um projeto interessante para mim como programador C # é o suporte C # Eval em Mono . Mas ainda não está disponível (fará parte do Mono 2.2).
fonte
Outra votação para IronPython. Incorporá-lo é simples, a interoperação com classes .Net é direta e, bem, é Python.
fonte
Posso sugerir S # que mantenho atualmente. É um projeto de código aberto, escrito em C # e projetado para aplicativos .NET.
Inicialmente (2007-2009), ele estava hospedado em http://www.codeplex.com/scriptdotnet , mas recentemente foi movido para o github.
fonte
Experimente Ela . Esta é uma linguagem funcional semelhante a Haskell e pode ser incorporada em qualquer aplicativo .Net. Mesmo ele tem um IDE simples, mas utilizável.
fonte
Ainda não tentei, mas parece muito legal:
http://www.codeplex.com/scriptdotnet
fonte
Acabei de criar um plug-in para um cliente, permitindo que escrevam código C # em módulos que agem como o VBA faz para o Office.
fonte
Já usei Lua antes; em um aplicativo Delphi, mas pode ser incorporado em muitas coisas. É usado no Photoshop Lightroom da Adobe .
fonte
Gosto de criar scripts com o próprio C # . Agora, em 2013, há um suporte muito bom para scripts C #, mais e mais bibliotecas para ele estão se tornando disponíveis.
Mono tem um ótimo suporte para script de código C # e você pode usá-lo com .NET apenas incluindo o
Mono.CSharp.dll
em seu aplicativo. Para aplicativo de script C # que fiz, verifique CShellVerifique também o `ScriptEngine 'em Roslyn que é da Microsoft, mas é apenas CTP.
Como algumas pessoas já mencionaram, o CS-Script já existe há bastante tempo.
fonte