Ich habe gerade ein Spiel mit Roslyn, bin aber unsicher, wie ich das Folgende machen soll.Laden eines Skripts aus einer CS-Datei und Zugriff auf Host-Methoden, Eigenschaften usw.?
diese einfach zu halten, können sagen, dass ich ein Host-Programm haben, die wie eine Methode hat so
public void DisplayMessage(string message)
{
MessageBox.Show(message);
}
Kann ich eine Skriptdatei dann haben MyScript.csx genannt und haben dann etwas irgendwo im Skript wie
void Main()
{
Host.DisplayMessage("I am a script");
}
Dann habe ich den Host laden Sie die Datei und führen Sie es aus.
Wenn so etwas nicht möglich ist, gibt es ein Scriptsystem/eine Engine, die auf C# basiert? Dies sind die Anforderungen
- Host-Anwendung kann Skript aus einer Datei laden.
- Script-Datei wird in C# geschrieben und kann so geschrieben werden VS2010 mit mit Syntax etc
- Script-Datei Host öffentliche Methoden zugreifen können, Eigenschaften usw.
Cool, ich werde es versuchen – Gaz83
Ok @svick nur schreiben DisplayMessage ("Ich bin ein Skript"); funktioniert nicht, also wie greifen Sie tatsächlich auf die Eigenschaften des Hosts zu? Ich habe versucht, #r "C: \ MyScriptTest.exe" (Assembly, die das Skript ausführt), an den Anfang des Skripts und führen Sie die folgenden TestApp.MainWindow.DisplayMessage ("Ich bin ein Skript"); Aber ich bekomme die "enthält keine Definition für 'DisplayMessage'" Fehler – Gaz83
Sie müssen wirklich nicht in irgendeiner Weise verweisen, sollten Sie in der Lage sein, es einfach zu nennen, wie ich schrieb. Sind Sie sicher, dass Sie eine Instanz von 'Host' an die' ExecuteFile() 'Methode übergeben und dass die Methode, die Sie aufrufen wollen,' public' ist? – svick