2016-09-12 66 views
5

給出一個簡單的F#控制檯應用程序:如何從VS碼推出的F#控制檯應用程序

[<EntryPoint>] 
let main argv = 
    printfn "Hello world" 
    Console.ReadLine() |> ignore 
    0 

什麼我需要做的,開始控制檯應用了同樣的方式是按Ctrl F5將在Visual做工作室。 我已經嘗試運行它使用Fake.ProcessHelper形成假構建腳本:

Target "Run" (fun _ ->  

     let exe = @"C:\Source\code\fs_console_app\build\fs_console_app.exe" 
     let errorCode = Shell.AsyncExec(exe, "", buildDir) 
     ()  
    ) 

按Ctrl F5我收到下面的生成報告:

Target  Duration 
------  -------- 
Build  00:00:00.3916039 
Run  00:00:00.0743197 
Total:  00:00:00.5605493 
Status: Ok 

但是啓動沒有控制檯應用程序的標誌並等待輸入。

回答

2

我更願意發表評論,但這會太長,我認爲這更多的是解決方案的答案,因爲我不熟悉假。我的猜測是你的運行目標實際上正在被執行,但可能被AsyncExec所吞噬,或者它只是在僞輸出窗口中顯示(嘗試執行),但不會啓動一個新窗口。

您只需創建一個runcmd.bat(假設你是在Windows上),並把下面進去,確保文件是不是在你的build目錄,因爲它可能得到清理:

start C:\Source\code\fs_console_app\build\fs_console_app.exe

您需要開始啓動一個新的cmd窗口。這可能是別的東西,當然,bash或PowerShell中,等

那麼你build.fsx內:

Target "Run" (fun _ ->  

     let exe = "path/to/runcmd.bat" 
     printfn "%A" "Hello World" 
     Shell.Exec(exe) |> ignore 

    ) 

// Build order 
"Clean" 
    ==> "Build" 
    ==> "Run" 
    ==> "Deploy" 

現在,如果我運行(通過按Ctrl + Shift + P)僞造,並選擇運行,它會編譯,啓動一個新的命令行並等待ReadLine。它也可以通過Ctrl + F5工作。

相關問題