建立 F# 應用程式
至此,您已使用 REPL,甚至可能已建立 fsx 指令碼檔案。 到現在您已開發應用程式,因此您需要包含更多檔案,以及封裝和散發應用程式的能力。 若要這樣做,您必須建立專案。 .NET SDK 提供各種專案範本,可協助您開始建立所有類型的應用程式。
什麼是 .NET 範本?
安裝 .NET SDK 時,您會收到十多個用於建立專案和檔案的內建範本,包括:
- 主控台應用程式
- 類別庫
- 單元測試專案
- ASP.NET Core Web 應用程式
- 組態檔
F# 支援各種不同的範本,從測試和網站到類別庫,應有盡有。 如需完整的支援專案清單,請在主控台中執行 dotnet new -l
。
使用下列範本建立應用程式
若要建立新的應用程式,請使用 dotnet new
.NET CLI 命令。 例如,如果您想要建立 F# 主控台應用程式,您可以使用下列命令。
dotnet new console --language F# -o MyFSharpApp
某些殼層會將 #
解譯為特殊字元。 在這種情況下,請用引號括住語言,如 dotnet new console --language "F#" -o MyFSharpApp
。
此 dotnet new console
命令會使用內建的主控台 .NET 範本來建構新的主控台應用程式。
幾秒鐘之後,名為 MyFSharpApp 的目錄隨即顯示您 F# 應用程式的程式碼。
專案結構
MyFSharpApp目錄中有兩個檔案:
- Program.fs:您應用程式的進入點。
- MyFSharpApp.fsproj:MSBuild 專案檔,其中包含組建資訊和指示。 MSBuild 是用來建立應用程式的平台,可提供專案檔的 XML 架構,以控制組建平台處理和建立軟體的方式。
Program.fs 檔案包含下列程式碼:
// Learn more about F# at https://learn.microsoft.com/dotnet/fsharp
open System
// Define a function to construct a message to print
let from whom =
sprintf "from %s" whom
[<EntryPoint>]
let main argv =
let message = from "F#" // Call the function
printfn "Hello world %s" message
0 // return an integer exit code
此應用程式會使用以 open
關鍵字匯入的 System
類別庫。
from
函式會使用 whom
字串參數來建立和格式化字串訊息。
main
函式是應用程式的進入點。 其使用 from
函式建立訊息「from F#」並將值繫結至 message
。 然後,使用 printfn
函式,會將「Hello world from F#」列印到主控台。
建置應用程式
現在您已經建立了主控台應用程式,現在可以使用 dotnet build
命令來加以建立。 dotnet build
命令會將專案及其相依性建置成一組二進位檔。 二進位檔包含中繼語言 (IL) 檔案 (副檔名為 .dll) 的專案程式碼。 視專案類型和設定而定,可能會包含其他檔案,例如:
- 可以用來執行應用程式的可執行檔 (如果專案類型是以 .NET Core 3.0 或更新版本為目標的可執行檔)。
- 用於進行偵錯工具的符號檔 (副檔名為 .pdb)。
- .deps.json 檔案,其會列出應用程式或程式庫的相依性。
- .runtimeconfig.json 檔案,可指定共用的執行階段及應用程式的版本。
- 專案相依的其他程式庫 (透過專案參考或 NuGet 封裝參考)。
輸出檔會寫入至預設位置,即 bin/<configuration>/<target>。 Debug 是預設設定,但您可以使用 --configuration
選項來加以覆寫。 目標是指在 fsproj 檔案的 TargetFramework
屬性中指定的目標 Framework。 目標 Framework 會指定一組您想要在應用程式或程式庫使用的 API。 例如,您有 .NET 5 應用程式並執行 dotnet build
,則輸出會放置在 bin/Debug/net5.0。
執行您的應用程式
針對可執行的應用程式,此 dotnet run
命令提供您方便選項來執行應用程式。 此 dotnet run
命令會在您的輸出目錄中尋找 .dll 或可執行檔,並使用 dotnet
驅動程式來執行應用程式的進入點 (Program.fs)。
提示
當您使用 dotnet run
命令時,dotnet build
也會自動執行。 因此,您可以為自己省下明確建立應用程式的步驟。