【问题标题】:Capturing Standard Output from an IronRuby Script using the DLR APIs使用 DLR API 从 IronRuby 脚本捕获标准输出
【发布时间】:2010-03-14 04:43:30
【问题描述】:

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

puts "Hello World"

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

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

如何捕获“Hello World”?

【问题讨论】:

    标签: c# ironruby dynamic-language-runtime


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 您好 Eric,我实际上想使用 IronRuby 运行时而不是作为外部进程,这样我就可以将变量传入和传出脚本。您链接到的方法似乎不适用于该方法。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 您的帖子是关于 Process 和 ProcessStartInfo,而不是关于 OP 要求的 IronRuby。
        猜你喜欢
        • 2011-07-05
        • 1970-01-01
        • 2017-07-09
        • 1970-01-01
        • 2010-09-09
        • 2015-07-19
        • 2018-06-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多