我有一个非常简单的 test.rb 文件:
puts "Hello World"
我想在 c# 中执行这个文件,例如:
var runtime = Ruby.CreateRuntime();
runtime.ExecuteFile("C:\test.rb");
如何捕获“Hello World”?
我有一个非常简单的 test.rb 文件:
puts "Hello World"
我想在 c# 中执行这个文件,例如:
var runtime = Ruby.CreateRuntime();
runtime.ExecuteFile("C:\test.rb");
如何捕获“Hello World”?
ScriptRuntime 有一个 IO 属性,它返回一个 ScriptIO 对象。您可以调用 SetOutput 并重定向输出。正如其他人所提到的,还有 Console.SetOut 您可能想调用它,以防用户直接调用 Console.WriteLine。不过,使用 ScriptIO 的好处是您可以在不同的 ScriptRuntime 中将多个脚本写入不同的输出。
您可以重定向标准输出并在您的 C# 程序中读取它,如下所示。
您可以做的一件事是在 ExecuteFile 之前和之后再次调用 Console.setOut 和/或 Console.setErr。第一次您将输出重定向到您选择的流,然后将其恢复为以前的值。
我认为这篇文章回答了你的问题。