如果我有以下代码使用Roslyn编译器写入控制台和调试输出。如何重定向输出,以便Execute函数可以返回它们以及实际结果。
await Execute("System.Console.Write(\"Hello\"); System.Diagnostics.Debug.Write(\"World\"););
public async Task<object> Execute(string code)
{
return await CSharpScript.EvaluateAsync(code);
}
答案 0 :(得分:2)
只需调用Console.SetOut
即可更改Console.Write *写入的流。然后,一旦运行完代码,您就可以将其读回来。同样,对于Debug.Write,您可以编辑TraceListeners
集合。
答案 1 :(得分:0)
你做不到。一旦它被编译,它就是你自己的过程中的代码。
您可以编译完整的可执行文件,将其保存到磁盘,然后重定向运行。