F# programmatically running .fsx script file

后端 未结 2 479
猫巷女王i
猫巷女王i 2020-12-31 23:49

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 prog

相关标签:
2条回答
  • 2020-12-31 23:59

    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();;
    
    0 讨论(0)
  • 2021-01-01 00:05

    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
    
    0 讨论(0)
提交回复
热议问题