2016-09-12 8 views
5

考えると、単純なF#のコンソールアプリケーション:私はCtrlを押しながらF5は、Visualで行うのと同じ方法で、コンソールアプリケーションを起動するために必要な何VSコードからF#のコンソールアプリケーションを起動する方法

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

スタジオ。

CtrlキーF5を押す
Target "Run" (fun _ ->  

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

私は次のビルドレポートを受信:

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

しかし、コンソールアプリケーションの兆候は起動中、私はそれがFake.ProcessHelperを使用してFAKEビルドスクリプトを形成ランニング試してみました 入力を待つ。

答えて

2

私はコメントすることを好みましたが、それは長すぎるでしょう、私はFakeに慣れていないので、これは回避策の答えの多くを考慮します。私の推測では、あなたの実行目標は実際に実行されているが、おそらくAsyncExecによって飲み込まれているか、偽の出力ウィンドウ(Execを試してみる)に表示されているだけですが、新しいウィンドウは開始しません。

あなただけ(あなたが窓にしていると仮定)runcmd.batを作成し、そこに以下を入れて、それがクリーンアップされる可能性がありますようファイルがビルドディレクトリにないことを確認することができます

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

新しいcmdウィンドウを開始する必要があります。 、私は(Ctrlキーを押しながら+ Shiftキー+ Pを経由して)実行するとフェイク

Target "Run" (fun _ ->  

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

    ) 

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

、およびファイル名を指定して実行を選択:これはあなたのbuild.fsx内部続いなどもちろん、bashやPowerShellのの何か他のもの、

可能性がありコンパイルし、新しいコマンドラインを開始し、ReadLineを待ちます。また、Ctrl + F5で動作します。

関連する問題