Ausführen von Skripts in C#
Möchte ich ausführen, javascript/Python/Ruby in meine Anwendung.
Ich habe eine Anwendung, die erstellt automatisch basierend auf Benutzer-definition. Der Prozess ist erzeugt in C#. Ich möchten, aktivieren Sie erweiterte Benutzer zu injizieren script in vordefinierten Positionen. Diese Skripte ausgeführt werden soll aus der C# - Prozess.
Zum Beispiel der erstellte Prozess wird einige Aktivitäten und in der Mitte sollte das script ausgeführt werden und dann der Prozess geht weiter wie zuvor.
Gibt es einen Mechanismus zum ausführen dieser Skripte von C#?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grundsätzlich haben Sie zwei Probleme: wie definieren Sie den Punkt von Injektionen in den generierten code, und wie man python /ruby /whatev Skripte von dort.
Je nachdem, wie Sie generiert den Prozess, eine mögliche Lösung wäre, fügen Sie eine Funktion zu jedem möglichen Punkt der Injektion. Die Funktion wäre zu überprüfen, ob der Benutzer zugeordnet hat alle Skripts, die mit Punkte gegeben, und wenn ja, läuft das Skript durch aufrufen IronPython /IronRuby (mit Optional angegebenen Parameter).
Nachteile sind: eingeschränkte Erreichbarkeit aus den Skripts zu den erstellten Prozess (im Grunde nur Variablen als Parameter übergeben zugegriffen werden kann); als auch in der Umsetzung-Grenzen (IronPython-die aktuelle version lässt einige grundlegende system-Funktionen).
Blick in IronPython und IronRuby-diese können Sie ganz einfach die Interoperabilität mit C#.
Können Sie kompilieren von C# - code aus einem C# - Anwendung mit dem CSharpCodeProvider Klasse.
Wenn die Kompilierung erfolgreich ist, können Sie führen Sie die resultierende assembly zurückgegeben, die über die CompiledAssembly Eigenschaft des CompilerResults Klasse.
Genial C# - scripting-Sprache - Script.Net
.NET hat eine scripting Sprache, einschließlich runtime-engine in der PowerShell, die eingebettet werden können, in jedem .NET-Anwendung.
Können Sie kompilieren von C# - code "on the fly" in eine in-memory-Montage. Ich denke, das ist möglich mit IronPython und IronRuby als gut. Blick auf die CodeDomProvider.CreateProvider Methode.
Wenn Sie benötigen, um ausführen von Skripts, die eine Menge, oder wenn Ihr Prozess läuft für eine lange Zeit, möchten Sie vielleicht zu laden, diese Baugruppen in eine andere Anwendungsdomäne. Und die AppDomain entladen, nachdem Sie fertig mit dem Skript. Ansonsten sind Sie nicht in der Lage, Sie zu entfernen aus dem Speicher. Dies hat einige Konsequenzen auf die anderen Klassen in Ihrem Projekt, weil Sie um marshall alle Anrufe.
Haben Sie sich Gedanken über Visual Studio für Applikationen? Ich habe nicht gehört, viel über Sie, da .NET 1.1, aber es könnte einen Blick Wert sein.
http://msdn.microsoft.com/en-us/library/ms974548.aspx
Ich getan habe genau das erst vor kurzem konnten die run-time neben der C# - scripting.
Es ist gar nicht schwer, und in diesem Artikel:
http://www.divil.co.uk/net/articles/plugins/scripting.asp
ist eine sehr nützliche Zusammenfassung der details.