2010-03-17 153 views
9

我試圖通過在F#中編寫小控制檯腳本來實踐我的F#,而不是使用我通常的編寫shell腳本/批處理文件的方法。我目前使用「fsi script.fsx [args]」運行它們。有沒有一種方法可以將這些fsx文件與fsi關聯起來,以便我可以像「script.fsx [args]」一樣直接運行它們?執行F#腳本

+3

儘管編寫簡單的腳本文件並運行它們絕對是一種選擇,但我認爲如果從Visual Studio使用F#Interactive,學習F#會更容易。您可以先創建一個新的「F#腳本」(文件 - >新建 - >文件...),然後開始編寫一些代碼(以各種順序)。然後,您可以選擇部分代碼,並通過執行[Alt] + [Enter]在F#交互式窗口中對其進行評估。 –

+3

@Tomas - 我認爲他的意思是說他寫作的腳本是寫實際代碼的練習,同時滿足他同時的需求(看起來他寫了很多腳本) –

+0

Tomas:有一件事沒有從描述中不清楚:您仍然需要手動打開F#交互式窗口才能使Alt-Enter技巧工作。但是一個很好的技巧!謝謝! – itowlson

回答

7

是有可能的關聯步行通過。

有兩個關鍵位置:

  1. 您需要綁定的應用程序來執行的「.fsx」擴展名。執行此操作的確切方法可能會在操作系統版本之間有所不同(我以前只通過直接編輯註冊表來完成此操作,所以我無法在此處提供通用解決方案);確保將要執行的命令不包括腳本參數(如%*),所以在註冊表中結合殼\開放\命令行應該如下

    "c:\Program Files\FSharp-1.9.9.9\bin\fsi.exe" "@%1" %*

    見Gradbot的更多細節響應。

  2. 您可能希望將您希望觸發腳本執行的擴展名(本例中爲「.fsx」)添加到PATHEXT環境變量中,因此即使沒有指定腳本的擴展名,CMD.exe也可以找到該腳本。警告:如果您擔心繫統的安全性,請重新考慮這一步 - 事實上,VBScript已在默認的Windows XP和較早的系統上註冊以提供類似功能,這在過去已被病毒編寫者利用過(我不知道如果Vista或Windows 7仍然如此)。
+2

您也可以在命令行(至少在我嘗試過的所有Windows版本中)使用「ftype」和「assoc」命令來完成#1。 – brianary

4

由於到目前爲止還沒有答案,我會嘗試將我早些時候的評論轉換成一個更詳細的答案。

我只是試圖創造* .fsx文件標準的Windows協會在fsi.exe自動打開他們,這沒有任何問題的工作 - 當您打開FSX文件,它運行F#互動並自動評估文件的內容。這對應於運行命令:

> fsi.exe test.fsx 

但是,我認爲從Visual Studio使用F#Interactive學習F#要容易得多。即使您沒有許可證,您也可以使用Visual Studio Shell with the free F# plugin。我認爲SharpDevelop也提供了類似的整合(但可能沒有一些限制)。

最簡單的開始方法是創建一個新的「F#腳本」(文件 - >新建 - >文件...),然後開始編寫一些代碼(以各種順序)。然後,您可以選擇部分代碼並通過執行[Alt] + [Enter]在F#交互式窗口中對其進行評估。您首先需要打開F#Interactive窗口,該窗口可以使用[Ctrl] + [Alt] + [F]完成,或者您可以在視圖 - >其他窗口菜單項中找到它。

我認爲大多數F#網絡廣播以這種方式使用F#Interactive,所以如果你看看其中的一些,你應該明白如何使用它。以www.fsharp.netF# videos at Channel 9How Do I?視頻爲例。

+1

我認爲他試圖取代批次文件與F#腳本(這是他問是否有辦法指向一個fsx文件)。感謝你的回答。 – Amir