F#使用F#Interactive从另一个脚本启动脚本

时间:2011-04-13 18:57:46

标签: scripting f# f#-interactive

我似乎找不到办法做到这一点。基本上我想用伪代码做这个:

MainScript.fsx:

  

printfn“启动外部脚本”

     

启动Script1.fsx

     

printfn“已完成”

Script1.fsx:

  

printfn“我是Script1正在运行”

因此输出窗口应该显示(在运行MainScript.fsx之后):

  

“启动外部脚本”

     

“我是Script1正在运行”

     

“完成”

基本上,启动Script1.fsx是我不知道如何实现的方法。

提前致谢,

鲍勃

1 个答案:

答案 0 :(得分:2)

您可以使用ProcessStartInfo开始新流程。您需要提供fsi.exe的路径,并使用您的fsx文件作为参数。您需要将UseShellExecute设置为false才能将结果保存在交互式shell中。

例如:

let exec fsi script =
    let psi = new System.Diagnostics.ProcessStartInfo(fsi)
    psi.Arguments <- script
    psi.UseShellExecute <- false
    let p = System.Diagnostics.Process.Start(psi)
    p.WaitForExit()
    p.ExitCode

exec @"c:\Program Files\Microsoft F#\v4.0\Fsi.exe" "foo.fsx"