是否可以在不显示控制台窗口的情况下运行f#脚本?

Alf*_*a07 4 f# winforms f#-interactive

我有一个使用Windows窗体的f#脚本,我希望它在没有显示控制台窗口(fsi.exe)的情况下运行.有可能吗?怎么样?下面是一个脚本示例.控制台窗口截图

#r "mscorlib.dll"
#r "System.dll"

open System.IO
open System.Windows.Forms

let DoUsefulThing() = ()

let form = new Form()
let button = new Button(Text = "Do useful thing")
button.Click.AddHandler(fun _ _ -> DoUsefulThing())

form.Controls.Add(button)
form.ShowDialog()
Run Code Online (Sandbox Code Playgroud)

des*_*sco 10

作为一个选项,您可以PInvoke并隐藏控制台窗口

#r "mscorlib.dll"
#r "System.dll"

open System.IO
open System.Windows.Forms

module FSI =
    [<System.Runtime.InteropServices.DllImport("user32.dll")>]
    extern bool ShowWindow(nativeint hWnd, int flags)
    let HideConsole() = 
        let proc = System.Diagnostics.Process.GetCurrentProcess()
        ShowWindow(proc.MainWindowHandle, 0)

FSI.HideConsole()

let DoUsefulThing() = ()


let form = new Form()
let button = new Button(Text = "Do useful thing")
button.Click.AddHandler(fun _ _ -> DoUsefulThing())

form.Controls.Add(button)
form.ShowDialog()
Run Code Online (Sandbox Code Playgroud)


Joh*_*mer 5

这种任务的真正答案不是使用fsc和编译成一个.exe不会显示控制台窗口的任务.

我不认为fsi是为你想要做的而设计的