Estamos escribiendo una aplicación de escritorio rica y compleja y necesitamos ofrecer flexibilidad en los formatos de informes, por lo que pensamos en exponer nuestro modelo de objetos a un lenguaje de secuencias de comandos. Hubo un tiempo en que eso significaba VBA (que sigue siendo una opción), pero el derivado del código administrado VSTA (creo) parece haberse marchitado en la vid.
¿Cuál es ahora la mejor opción para un lenguaje de secuencias de comandos integrado en Windows .NET?
Respuestas:
He usado CSScript con resultados asombrosos. Realmente redujo el tener que hacer enlaces y otras cosas de bajo nivel en mis aplicaciones con secuencias de comandos.
fuente
Personalmente, usaría C # como lenguaje de secuencias de comandos. El marco .NET (y Mono, gracias Matthew Scharley) en realidad incluye los compiladores para cada uno de los lenguajes .NET en el marco mismo.
Básicamente, hay 2 partes para la implementación de este sistema.
Permitir que el usuario compile el código.Esto es relativamente fácil y se puede hacer en solo unas pocas líneas de código (aunque es posible que desee agregar un cuadro de diálogo de error, que probablemente sería un par de docenas de líneas de código más, dependiendo de cuán utilizable quieres que sea).
Crear y usar clases contenidas en el ensamblado compilado. Esto es un poco más difícil que el paso anterior (requiere un poco de reflexión). Básicamente, debería tratar el ensamblado compilado como un "complemento" para el programa. Hay bastantes tutoriales sobre varias formas en que puede crear un sistema de complementos en C # (Google es su amigo).
Implementé una aplicación "rápida" para demostrar cómo se puede implementar este sistema (¡incluye 2 scripts de trabajo!). Este es el código completo para la aplicación, simplemente cree uno nuevo y pegue el código en el archivo "program.cs". En este punto, debo disculparme por la gran parte del código que estoy a punto de pegar (no tenía la intención de que fuera tan grande, pero me dejé llevar un poco con mis comentarios).
fuente
csscript.net
parece que es una especie de envoltorio sobre esto. Esta es básicamente una implementación básica. Creo que una mejor pregunta sería "¿qué hace csscript.net por mí que esto no haga?". No sé qué está haciendo csscript, pero definitivamente saben lo que hace el código anterior aquí, lo tienen (o algo extremadamente similar) en su biblioteca.IronPython . Aquí hay una descripción general de cómo incrustarlo .
fuente
El motor PowerShell se diseñó para integrarse fácilmente en una aplicación para que se pueda programar. De hecho, la CLI de PowerShell es solo una interfaz basada en texto para el motor.
Editar: consulte https://devblogs.microsoft.com/powershell/making-applications-scriptable-via-powershell/
fuente
Boo lenguaje.
fuente
Mi lenguaje de escritura de elección sería Lua en estos días. Es pequeño, rápido, limpio, completamente documentado, bien respaldado, tiene una gran comunidad , es utilizado por muchas grandes empresas de la industria (Adobe, Blizzard, EA Games), definitivamente vale la pena intentarlo.
Para usarlo con lenguajes .NET, el proyecto LuaInterface le proporcionará todo lo que necesita.
fuente
¿Por qué no probar C #? Mono tiene un gran proyecto nuevo especialmente para evaluar dinámicamente C #:
http://tirania.org/blog/archive/2008/Sep-10.html
fuente
IronRuby como se mencionó anteriormente. Un proyecto interesante para mí como programador de C # es el soporte de C # Eval en Mono . Pero aún no está disponible (será parte de Mono 2.2).
fuente
Otro voto para IronPython. Incrustarlo es simple, la interoperación con las clases .Net es sencilla y, bueno, es Python.
fuente
Puedo sugerir S # que actualmente mantengo. Es un proyecto de código abierto, escrito en C # y diseñado para aplicaciones .NET.
Inicialmente (2007-2009) estaba alojado en http://www.codeplex.com/scriptdotnet , pero recientemente se movió a github.
fuente
Prueba Ela . Este es un lenguaje funcional similar a Haskell y puede integrarse en cualquier aplicación .Net. Incluso tiene un IDE simple pero utilizable.
fuente
No he probado esto todavía, pero se ve bastante bien:
http://www.codeplex.com/scriptdotnet
fuente
Acabo de crear un complemento para un cliente, lo que les permite escribir código C # en módulos que actúan como lo hace VBA para Office.
fuente
He usado a Lua antes; en una aplicación Delphi, pero puede integrarse en muchas cosas. Se utiliza en Photoshop Lightroom de Adobe .
fuente
Me gusta programar con C # en sí . Ahora, en 2013, hay un soporte bastante bueno para las secuencias de comandos C #, y cada vez hay más bibliotecas disponibles.
Mono tiene un gran soporte para el código de script C # , y puede usarlo con .NET simplemente incluyendo el
Mono.CSharp.dll
en su aplicación. Para la aplicación de secuencias de comandos C # que hice, consulte CShellConsulte también el 'ScriptEngine' en Roslyn, que es de Microsoft, pero esto es solo CTP.
Como algunas personas ya han mencionado, CS-Script también ha existido durante bastante tiempo.
fuente