2016-05-06 8 views
1

Wenn ich den folgenden Code mit dem Roslyn-Compiler zum Schreiben in die Konsole und Debug-Ausgabe habe. Wie kann ich die Ausgabe umleiten, so dass die Execute-Funktion beide zurückgeben kann, sowie das eigentliche Ergebnis.Redirect Console & Debug Ausgabe mit dem Roslyn Compiler

await Execute("System.Console.Write(\"Hello\"); System.Diagnostics.Debug.Write(\"World\");); 

public async Task<object> Execute(string code) 
{ 
    return await CSharpScript.EvaluateAsync(code); 
} 
+0

Sie könnten die Aufrufe analysieren und neu schreiben, um 'Console' durch Ihre eigenen Funktionen zu ersetzen. – SLaks

Antwort

2

Rufen Sie einfach Console.SetOut an, um den Stream zu ändern, in den Console.Write * schreibt. Dann können Sie es zurücklesen, sobald Sie Ihren Code ausgeführt haben. Auf ähnliche Weise können Sie für Debug.Write die TraceListeners-Auflistung bearbeiten.

0

Sie können nicht. Sobald es erfüllt ist, ist es Code in Ihrem eigenen Prozess.

Sie können eine vollständige ausführbare Datei kompilieren, auf der Festplatte speichern und sie umgeleitet ausführen.