Wir schreiben eine komplexe, umfangreiche Desktop-Anwendung und müssen Flexibilität bei den Berichtsformaten bieten, sodass wir dachten, wir würden unser Objektmodell nur einer Skriptsprache aussetzen. Zu dieser Zeit bedeutete dies VBA (was immer noch eine Option ist), aber das verwaltete Code-Derivat VSTA (glaube ich) scheint am Rebstock verdorrt zu sein.
Was ist jetzt die beste Wahl für eine eingebettete Skriptsprache unter Windows .NET?
Antworten:
Ich habe CSScript mit erstaunlichen Ergebnissen verwendet. Es hat wirklich dazu beigetragen, dass ich in meinen skriptfähigen Apps Bindungen und andere Dinge auf niedriger Ebene ausführen muss.
quelle
Persönlich würde ich C # als Skriptsprache verwenden. Das .NET-Framework (und Mono, danke Matthew Scharley) enthält tatsächlich die Compiler für jede der .NET-Sprachen im Framework selbst.
Grundsätzlich besteht die Implementierung dieses Systems aus zwei Teilen.
Ermöglichen Sie dem Benutzer das Kompilieren des Codes Dies ist relativ einfach und kann in nur wenigen Codezeilen durchgeführt werden (obwohl Sie möglicherweise einen Fehlerdialog hinzufügen möchten, der je nach Verwendbarkeit wahrscheinlich ein paar Dutzend weitere Codezeilen umfassen würde du willst es sein).
Erstellen und Verwenden von Klassen, die in der kompilierten Assembly enthalten sind Dies ist etwas schwieriger als der vorherige Schritt (erfordert ein wenig Nachdenken). Grundsätzlich sollten Sie die kompilierte Assembly nur als "Plug-In" für das Programm behandeln. Es gibt einige Tutorials zu verschiedenen Möglichkeiten, wie Sie ein Plug-In-System in C # erstellen können (Google ist Ihr Freund).
Ich habe eine "schnelle" Anwendung implementiert, um zu demonstrieren, wie Sie dieses System implementieren können (enthält 2 Arbeitsskripte!). Dies ist der vollständige Code für die Anwendung. Erstellen Sie einfach einen neuen und fügen Sie den Code in die Datei "program.cs" ein. An dieser Stelle muss ich mich für den großen Teil des Codes entschuldigen, den ich einfügen möchte (ich hatte nicht vor, dass er so groß ist, wurde aber von meinen Kommentaren ein wenig mitgerissen).
quelle
csscript.net
sieht aus wie es eine Art Wrapper darüber ist. Dies ist im Grunde eine reine Implementierung. Ich denke, eine bessere Frage wäre "Was macht csscript.net für mich, was dies nicht tut". Ich weiß nicht, was csscript tut, aber sie wissen definitiv, was der obige Code hier tut, sie haben ihn (oder etwas sehr ähnliches) in ihrer Bibliothek.IronPython . Hier ist eine Übersicht über das Einbetten .
quelle
Die PowerShell-Engine wurde so konzipiert, dass sie problemlos in eine Anwendung eingebettet werden kann, um sie skriptfähig zu machen. Tatsächlich ist die PowerShell-CLI nur eine textbasierte Schnittstelle zur Engine.
Bearbeiten: Siehe https://devblogs.microsoft.com/powershell/making-applications-scriptable-via-powershell/
quelle
Boo Sprache.
quelle
Meine bevorzugte Skriptsprache wäre heutzutage Lua . Es ist klein, schnell, sauber, vollständig dokumentiert, gut unterstützt, hat eine großartige Community und wird von vielen großen Unternehmen der Branche (Adobe, Blizzard, EA Games) verwendet. Es ist definitiv einen Versuch wert.
Um es mit .NET-Sprachen zu verwenden, bietet das LuaInterface- Projekt alles, was Sie benötigen.
quelle
Warum nicht C # ausprobieren? Mono hat ein großartiges neues Projekt speziell für die dynamische Bewertung von C #:
http://tirania.org/blog/archive/2008/Sep-10.html
quelle
IronRuby wie oben erwähnt. Ein interessantes Projekt für mich als C # -Programmierer ist die Unterstützung von C # Eval in Mono . Aber es ist noch nicht verfügbar (wird Teil von Mono 2.2 sein).
quelle
Eine weitere Abstimmung für IronPython. Das Einbetten ist einfach, die Interaktion mit .NET-Klassen ist unkompliziert, und es ist Python.
quelle
Ich kann S # vorschlagen, das ich derzeit pflege. Es ist ein Open Source-Projekt, das in C # geschrieben und für .NET-Anwendungen entwickelt wurde.
Ursprünglich (2007-2009) wurde es unter http://www.codeplex.com/scriptdotnet gehostet , aber kürzlich wurde es auf Github verschoben.
quelle
Versuchen Sie es mit Ela . Dies ist eine funktionale Sprache ähnlich wie Haskell und kann in jede .NET-Anwendung eingebettet werden. Sogar es hat eine einfache, aber brauchbare IDE.
quelle
Ich habe das noch nicht ausprobiert, aber es sieht ziemlich cool aus:
http://www.codeplex.com/scriptdotnet
quelle
Ich habe gerade ein Plugin für einen Client erstellt, mit dem er C # -Code in Modulen schreiben kann, die sich wie VBA für Office verhalten.
quelle
Ich habe Lua schon einmal benutzt . in einer Delphi-App, aber es kann in viele Dinge eingebettet werden. Es wird in Photoshop Lightroom von Adobe verwendet .
quelle
Ich mag Skripte mit C # selbst . Jetzt, im Jahr 2013, gibt es eine recht gute Unterstützung für C # -Skripte, es werden immer mehr Bibliotheken dafür verfügbar.
Mono bietet eine hervorragende Unterstützung für das Schreiben von C # -Code . Sie können es mit .NET verwenden, indem Sie es einfach
Mono.CSharp.dll
in Ihre Anwendung aufnehmen. Für C # -Skriptanwendungen , die ich erstellt habe, lesen Sie CShellSchauen Sie sich auch die "ScriptEngine" in Roslyn an, die von Microsoft stammt, aber dies ist nur CTP.
Wie einige bereits erwähnt haben, gibt es CS-Script auch schon eine ganze Weile.
quelle