2016-05-06 3 views
1

Roslynコンパイラを使用してコンソールに書き込み、出力をデバッグする次のコードがある場合。どのように出力をリダイレクトすることができるので、Execute関数は両方の結果と実際の結果を返すことができます。Roslynコンパイラを使用したコンソール&デバッグ出力のリダイレクト

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

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

'Console'を自分の関数で置き換えるために、コールを解析して書き直すことができます。 – SLaks

答えて

2

Console.SetOutを呼び出して、Console.Writeが書き込むストリームを変更するだけです。その後、コードの実行が完了したら、それを読み込むことができます。同様に、Debug.Writeの場合、TraceListenersコレクションを編集できます。

0

できません。それが遵守されると、それはあなた自身のプロセスのコードです。

完全な実行ファイルをコンパイルしてディスクに保存し、リダイレクトすることができます。

関連する問題