2017-08-25 62 views
2

當我雙擊.fsx文件時,腳本在執行後立即結束。沒有機會與劇本互動或看看它做了什麼。F#腳本在執行後立即結束(FSI)

我幾乎看不到一個腳本創建了一個WinForms窗口,但它很快關閉。

我嘗試了好幾種默認運行的操作(包括髮送到.cmd文件):

"C:\Program Files (x86)\Microsoft SDKs\F#\4.1\Framework\v4.0\fsi.exe" "%1" %* 
"C:\Program Files (x86)\Microsoft SDKs\F#\4.1\Framework\v4.0\fsi.exe" --quiet --exec "%1" 
+1

從命令行運行它會發生什麼? – TheQuickBrownFox

+0

這就是腳本應該做的事情:執行和完成。你爲什麼期望他們留下來? –

+0

從命令行運行時,它表現出相同的行爲。 – Gordon

回答

2

你試過確實運行該腳本,然後退出這兩個命令行。如果要保持打開REPL以與腳本進行交互,則需要--load:file.fsx--use:file.fsx

  • --use:file.fsx做大致相同,只是運行FSI,然後粘貼的file.fsx內容到REPL。因此,例如,如果文件只包含let x = 2,那麼您可以立即鍵入x;;,它將被識別。如果你的文件包含一堆值,語句,類型和/或模塊,這就是你想要的。

  • --load:file.fsx與剛剛運行fsi和鍵入#load "file.fsx"大致相同。這意味着此文件中定義的值將位於單獨的名稱空間中。如果您的文件以namespacemodule聲明開頭,則這是您想要的。

+0

完全按照上面所述使用開關嗎?或者用「%1」(或類似的通配符)替換「file.fsx」?我使用腳本文件的默認運行操作命令(「fsx」文件類型)。 – Gordon

+0

那麼你把你的文件名,而不是「file.fsx」,所以是在這裏你需要把「%1」。 – Tarmil

+0

「C:\ Program Files(x86)\ Microsoft SDKs \ F#\ 4.1 \ Framework \ v4.0 \ fsi.exe」--load:「%1」%* – Gordon