使用 Roslyn 编译器重定向控制台和调试输出

Redirect Console & Debug Output using the Roslyn Compiler

如果我有以下代码使用 Roslyn 编译器写入控制台并调试输出。如何重定向输出,以便 Execute 函数可以 return 它们以及实际结果。

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

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

你不能。一旦合规,它就是您自己流程中的代码。

您可以编译一个完整的可执行文件,将其保存到磁盘,然后运行它被重定向。

只需调用 Console.SetOut 即可更改 Console.Write* 写入的流。然后,您可以在完成 运行 代码后重新阅读它。同样,对于 Debug.Write,您可以编辑 TraceListeners 集合。