使用 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
集合。
如果我有以下代码使用 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
集合。