私は非常に単純な 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には、ScriptIOオブジェクトを返すIOプロパティがあります。その上でSetOutputを呼び出して、出力をリダイレクトできます。他の人が言及しているように、ユーザーがConsole.WriteLineを直接呼び出す場合に呼び出すConsole.SetOutもあります。ScriptIOを使用することの良い点は、異なるScriptRuntimeが異なる出力に書き込む複数のスクリプトを持つことができることです。
ここに示すように、標準出力をリダイレクトして C# プログラムで読み取ることができます。
できることの 1 つは、Console.setOut および/または Console.setErr を ExecuteFile の前に呼び出し、その後に再度呼び出すことです。初めて出力を選択したストリームにリダイレクトしてから、以前の値に戻します。
この投稿はあなたの質問に答えていると思います。