在 Visual Studio 中使用 Visual F# 進行開發

本文包含適用於 F# 開發的 Visual Studio 功能相關資訊。

安裝 F# 支援

若要在 Visual Studio 中使用 F# 進行開發,請先安裝 .NET 桌面開發 工作負載 (若尚未安裝的話)。 您可以透過 Visual Studio 安裝程式來安裝 Visual Studio 工作負載,您可以選取 [工具 > 取得工具和功能] 來開啟此功能。

Visual Studio 中的 .NET 桌面開發工作負載

F# 專案功能

有各種專案和項目範本可供 Visual Studio 中的 F# 使用。 下圖顯示適用於 .NET Core 和 .NET Standard 的一些 F# 專案範本:

Visual Studio 中的 F# 專案範本

下圖顯示一些 F# 項目範本:

Visual Studio 中的 F# 項目範本

如需資料存取之項目範本的詳細資訊,請參閱F# 型別提供者

下表摘要說明 F# 專案屬性中的功能:

專案設定 F# 支援? 備註
資源檔 Yes
建置、偵錯和參考設定 Yes
多目標 Yes
圖示和資訊清單 No 透過編譯器命令列選項提供。
ASP.NET 用戶端服務 No
ClickOnce No 適用時,請使用以另一種 .NET 語言所撰寫的用戶端專案。
強式命名 No 透過編譯器命令列選項提供。
組件的發佈和版本控制 No
程式碼分析 No 程式碼分析工具可以手動執行,或作為建置後命令一部分執行。
安全性 (變更信任層級) No

專案設計工具

[專案設計工具] 包含依相關功能分組的數個專案屬性頁。 可用於 F# 專案的頁面大部分是可用於其他語言的頁面子集,下表將描述這些頁面。 還提供了對應至 C# [專案設計工具] 頁面的連結。

[專案設計工具] 頁面 相關連結 描述
Application 專案設計工具、應用程式頁面 可讓您指定應用程式層級設定和屬性,例如您正在建立程式庫還是可執行檔、應用程式是以哪個 .NET 版本為目標,以及應用程式使用的資源檔儲存所在位置的相關資訊。
組建 專案設計工具、建置頁 可讓您控制如何編譯程式碼。
建置事件 專案設計工具、建置事件頁面 可讓您指定要在編譯前後執行的命令。
偵錯 專案設計工具、偵錯頁 可讓您控制應用程式在偵錯期間執行的方式。 這包括要使用哪些命令與應用程式的啟動目錄為何,以及您要啟用的任何特殊偵錯模式,例如原生程式碼和 SQL。
套件 (僅限 .NET SDK) N/A 可讓您在以 NuGet 套件形式發佈時,定義 NuGet 套件的中繼資料。
參考路徑 管理專案中的參考 可讓您指定要搜尋程式碼相依組件的位置。
資源 (僅限 .NET SDK) N/A 可讓您產生並管理預設資源檔。

F#-特定設定

下表摘要說明 F# 專用的設定:

[專案設計工具] 頁面 設定 描述
組建 產生 tail 呼叫 如果選取此設定,則可讓您使用尾端 Microsoft Intermediate Language (MSIL) 指令。 這會導致堆疊框架重複用於尾端遞迴函式。 相當於 --tailcalls 編譯器選項。
組建 其他旗標 可讓您指定其他編譯器命令列選項。

程式碼和文字編輯器功能

F# 支援 Visual Studio 程式碼和文字編輯器的下列功能:

功能 描述 F# 支援?
自動註解 可讓您註解或取消註解程式碼區段。 Yes
自動格式化 使用標準的縮排和樣式重新格式化程式碼。 No
書籤 可讓您在編輯器中儲存位置。 Yes
變更縮排 將選取行縮排或取消縮排。 Yes
智慧縮排 根據 F# 範圍規則,自動縮排和取消縮排資料指標。 Yes
尋找和取代文字 可讓您在檔案、專案或解決方案中搜尋,並且可能變更文字。 Yes
移至 .NET API 的定義 當資料指標位於 .NET API 時,會顯示從 .NET 中繼資料產生的程式碼。 No
移至使用者定義 API 的定義 當資料指標位於您定義的程式實體時,將資料指標移至您的程式碼中定義該實體的位置。 Yes
移至行 可讓您依據行號移至檔案中的特定行。 Yes
檔案頂端的巡覽列 可讓您依據函式名稱 (舉例來說) 跳至程式碼中的位置。 Yes
區塊結構輔助線 顯示表示 F# 範圍的輔助線,也可以將滑鼠停留在其上以進行預覽。 Yes
大綱 可讓您摺疊程式碼區段以建立更精簡的檢視。 Yes
定位點化 將空格轉換為定位點。 Yes
輸入顏色標示 以特殊的色彩顯示定義的類型名稱。 Yes
快速尋找。 請參閱 [尋找] 和 [尋找及取代] 視窗。 可讓您在檔案或專案中搜尋。 Yes
Ctrl +按一下 以移至定義 可讓您按住 Ctrl 並按一下 F# 符號,以叫用 [移至定義]。 Yes
從 QuickInfo 移至定義 工具提示內可叫用 [移至定義] 的可按式符號。 Yes
移至全部 透過 Ctrl T 啟用所有 F # 結構的全域、模糊比對導覽 + ****。 Yes
內嵌重新命名 重新命名符號內嵌的所有項目。 Yes
尋找所有參考 在程式碼基底中尋找符號的所有項目。 Yes
簡化名稱程式碼修正 移除 F# 符號不必要的限定詞。 Yes
移除未使用的 open 陳述式程式碼修正 移除文件中所有不必要的 open 陳述式。 Yes
未使用的值程式碼修正 建議將未使用的識別項重新命名為底線。 Yes

如需在 Visual Studio 中編輯程式碼和文字編輯器功能的一般資訊,請參閱在編輯器中撰寫程式碼

Intellisense 功能

下表摘要說明 F# 支援和不支援的 IntelliSense 功能:

功能 描述 F# 支援?
自動實作介面 產生介面方法的程式碼虛設常式。 Yes
程式碼片段 將來自常見程式碼建構程式庫的程式碼插入主題中。 No
自動完成文字 在您鍵入時完成單字和名稱,藉以省去鍵入工作。 Yes
自動完成 啟用時,會在您輸入時讓字組自動完成選取第一個相符項,而不是等待您選取其中一個相符項或按 Ctrl + 空格鍵 Yes
為未開啟命名空間中的符號提供自動完成 利用自動完成,建議使用位於未開啟之命名空間中的相符符號,提供以在選取時使用對應的 open 陳述式完成。 Yes
產生程式碼項目 可讓您產生各種建構的虛設常式程式碼。 No
列出成員 當您鍵入成員存取運算子 (.) 時,顯示類型的成員。 Yes
組合管理 Using/Open 組織 C# 中的 using 陳述式或 F# 中的 open 指示詞所參考的命名空間。 No
參數資訊 當您鍵入函式呼叫時,顯示參數的實用資訊。 Yes
快速諮詢 顯示程式碼中任一識別項的完整宣告。 Yes
自動以大括號完成 以交易方式自動完成 F# 大括弧類型的語法建構。 Yes

如需 IntelliSense 的一般資訊,請參閱使用 IntelliSense

偵錯功能

下表摘要說明對 F# 程式碼進行偵錯時可供使用的功能:

功能 描述 F# 支援?
自動變數視窗 顯示自動或暫存變數。 No
中斷點 可讓您在偵錯期間的特定時間點暫停程式碼執行。 Yes
條件式中斷點 啟用中斷點,以測試可判斷是否應該暫停執行的條件。 Yes
編輯後繼續 可讓您對執行中的程式進行偵錯時,不需停止再重新啟動偵錯工具,即可修改和編譯程式碼。 No
運算式評估工具 在執行階段評估並執行程式碼。 否,但是可以使用 C# 運算式評估工具,雖然您必須使用 C# 語法。
歷程偵錯 可讓您逐步執行先前執行的程式碼。 Yes
[區域變數] 視窗 顯示本機定義的值和變數。 Yes
執行至游標處 可讓您執行程式碼,直到觸逹包含資料指標的那一行為止。 Yes
逐步執行 可讓您繼續執行,並移入任何函式呼叫。 Yes
不進入函數 可讓您在目前的堆疊框架中繼續執行,並跳過任何函式呼叫。 Yes

如需 Visual Studio 偵錯工具的一般資訊,請參閱在 Visual Studio 中偵錯

其他工具

下表摘要說明 Visual Studio 工具中的 F# 支援。

工具 描述 F# 支援?
呼叫階層 顯示程式碼中函式呼叫的巢狀結構。 No
程式碼度量 收集程式碼的相關資訊,例如行數。 No
類別檢視 提供專案中以類型為基礎的程式碼檢視。 No
[錯誤清單] 視窗。 顯示程式碼中的錯誤清單。 Yes
F# 互動 可讓您鍵入 (或複製並貼上) F# 程式碼並立即執行它,這與建置專案無關。 F# 互動式視窗是讀取、評估、列印迴圈 (REPL)。 Yes
物件瀏覽器 可讓您檢視組件中的類型。 已編譯組件中顯示的 F# 類型與您撰寫的 F# 類型不完全相同。 您可以瀏覽 F# 類型的已編譯表示方式,但您無法檢視從 F# 顯示的類型。
輸出視窗 顯示組建輸出。 Yes
效能分析 提供工具來測量程式碼的效能。 Yes
屬性視窗 在擁有焦點的開發環境中顯示物件的屬性,並啟用其編輯功能。 Yes
Server Explorer 提供與各種伺服器資源互動的方式。 Yes
方案總管 可讓您檢視及管理專案和檔案。 Yes
工作清單 可讓您管理與程式碼相關的工作項目。 No
測試專案 提供協助您測試程式碼的功能。 No
工具箱 顯示包含可拖曳物件的索引標籤,例如控制項和文字或程式碼區段。 Yes

另請參閱