2016-09-12 3 views
5

Учитывая простой F # консольного приложения:Как запустить F # консольное приложение из VS кодекса

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

Что мне нужно сделать, чтобы запустить приложение консоли в той же манере, что Ctrl F5 будет делать в видео Студия. я попытался запустить его сформировать ПОДДЕЛЬНЫЙ сценарий сборки с использованием 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

Я бы предпочел комментировать, но это было бы слишком долго, я считаю это более полезным решением, так как я не знаком с Fake. Я предполагаю, что ваш Run Target на самом деле выполняется, но, вероятно, проглатывается AsyncExec или он просто отображается в окне Fake output (попробуйте Exec), но не запускает новое окно.

Вы можете просто создать runcmd.bat (предполагая, что вы на окнах), и поместите в него следующее, убедитесь, что файл находится не в каталоге сборки, как это могло бы получить очищено:

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

Вам нужно приступить к запуску нового CMD-окна. Это может быть что-то еще, конечно, удар или 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.

 Смежные вопросы

  • Нет связанных вопросов^_^