F# programmatically running .fsx script file

大憨熊 提交于 2019-12-18 13:39:15

问题


I'm sure this must be something really easy, but I can't seem to make it work. Let's say I have an .fsx script file and want to cause it to be executed programmatically. I'm guessing someone must have blogged about this at some point, but I can't seem to find an example that performs my simple scenario. Basically, I want to programmatically duplicate what happens when you right click on an .fsx file and choose "Run with F# Interactive..."


回答1:


As asked in a comment, you can set UseShellExecute to false to avoid opening the Windows shell. This way, you can have your output directly in 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



回答2:


After randomly messing around with the command line args I finally got it to work. I feel a little lame answering my own question, but hopefully it will still help someone else. It turned out my confusion was the proper usage of the command line arguments. If someone has something more elegant or generally useful than what I put I'll award the answer to you.

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();;


来源:https://stackoverflow.com/questions/5643120/f-programmatically-running-fsx-script-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!