2012-09-26 16 views
11

Hallo ich möchte Roslyn zum Scripting in meiner App verwenden. Aber ich habe eine neue (September) Version und ich bin verwirrt. Ich möchte Datei mit einigen einfach Funktion ausführen. Zum Beispiel:Roslyn Scripting

public int m(){ 
     return 6; 
} 

fand ich einige Artikel über sie zum Beispiel acticle. Es gibt einen Weg, es zu tun, aber in meiner Version ist nicht Session.Create() Ich will, es zu benutzen wie Ironpython Scripting

So etwas wie:

var scriptEngine = new SciptEngine.ExecuteFile(fileWithFunction); 
dynamic d = getFunction(m); 

oder

dynamische d = Callfunction (m);

Ist es möglich, oder muss ich Ironpython-Scripting?

+1

Ich weiß nichts über Roslyn, aber Sie können C# als Scripting-Engine verwenden ohne es. Sie können die Klasse CSharpCodeProvider aus dem Namespace Microsoft.CSharp verwenden, um eine Assembly zur Laufzeit zu kompilieren und Methoden aufzurufen oder Objekte aus dieser Assembly zu erstellen. Sehen Sie hier zum Beispiel ein Beispiel: http://www.crowsprogramming.com/archives/99 –

+0

Danke für die schnelle Antwort. Aber: Ich möchte es in meinem Mogre-Spiel verwenden und mein Vorgesetzter hat mir gesagt, dass ich versuchen soll, Roslyn zu benutzen, weil es ein C# -Compiler ist, der in C# geschrieben ist, damit es viel schneller geht. Ich weiß nicht, ob es stimmt, aber wenn jemand weiß, wie es geht, kann ich es testen. – wolen

Antwort

17

Die API hat sich nicht wesentlich, da die ursprüngliche CTP geändert, dass der Artikel in geschrieben wurde für Ihr Szenario.

var scriptEngine = new ScriptEngine(); 
var session = scriptEngine.CreateSession(); 
session.AddReference("System"); 
session.AddReference("System.Core"); 
session.Execute(@"public int m() { return 6; }"); 

int six = session.Execute<int>("m()");