使用DLR API从IronRuby脚本捕获标准输出

时间:2010-03-14 04:43:31

标签: c# ironruby dynamic-language-runtime

我有一个非常简单的test.rb文件:

puts "Hello World"

我想在c#中执行此文件,例如:

var runtime = Ruby.CreateRuntime();
runtime.ExecuteFile("C:\test.rb");

如何捕获“Hello World”?

4 个答案:

答案 0 :(得分:3)

ScriptRuntime有一个IO属性,它返回一个ScriptIO对象。您可以在其上调用SetOutput并重定向输出。正如其他人提到的那样,还有Console.SetOut你可能想要调用,因为用户直接调用Console.WriteLine。使用ScriptIO的好处是你可以在不同的ScriptRuntime写入不同的输出中有多个脚本。

答案 1 :(得分:1)

您可以重定向标准输出并在C#程序as shown here中读取它。

答案 2 :(得分:0)

您可以做的一件事是在ExecuteFile之前调用Console.setOut和/或Console.setErr,然后再调用。第一次将输出重定向到您选择的流时,然后将其恢复为之前的值。

答案 3 :(得分:-1)

我认为this帖子会回答你的问题。