F#以编程方式运行.fsx脚本文件

时间:2011-04-13 00:23:19

标签: scripting f# f#-interactive

我确信这一定非常简单,但我似乎无法使其发挥作用。假设我有一个.fsx脚本文件,并希望以编程方式执行它。我猜想有人必须在某个时候写过关于此的博客,但我似乎无法找到一个执行我的简单场景的例子。基本上,我想以编程方式复制右键单击.fsx文件并选择“使用F#Interactive运行...”时发生的情况。

2 个答案:

答案 0 :(得分:2)

如评论中所述,您可以将UseShellExecute设置为false以避免打开Windows shell。这样,您可以直接在F#shell中输出:

open System.Diagnostics

let execScript script =
    let psi = new ProcessStartInfo(@"c:\Program Files\Microsoft F#\v4.0\Fsi.exe")
    psi.Arguments <- script
    psi.UseShellExecute <- false
    let p = Process.Start(psi)
    p.WaitForExit()
    p.ExitCode

答案 1 :(得分:1)

随机乱搞命令行args后我终于开始工作了。我觉得有点蹩脚回答我自己的问题,但希望它仍能帮助别人。原来我的困惑是命令行参数的正确用法。如果某人有比我所说的更优雅或更有用的东西,我会给你答案。

open System.Diagnostics

let launchExecutable() =
    let proc = new Process()
    proc.StartInfo.FileName <- @"C:\Program Files (x86)\Microsoft F#\v4.0\fsi.exe"
    proc.StartInfo.Arguments <- @"--exec --nologo pathToFSXFile\Test.fsx"
    proc.Start()


launchExecutable();;