使用 .NET CLI 开始学习 F#

本文介绍如何使用 .NET CLI 在任何作系统(Windows、macOS 或 Linux)上开始使用 F# 。 其中介绍了如何使用控制台应用程序调用的类库生成多项目解决方案。

先决条件

若要开始,必须安装最新的 .NET SDK

本文假定你知道如何使用命令行并具有首选文本编辑器。 如果尚未使用它, Visual Studio Code 是 F# 文本编辑器的绝佳选项。

生成简单的多项目解决方案

打开命令提示符/终端,并使用 dotnet new 命令创建一个名为 FSharpSample 的新解决方案文件:

dotnet new sln -o FSharpSample

运行上一个命令后生成以下目录结构:

FSharpSample
    ├── FSharpSample.sln

编写类库

将目录更改为 FSharpSample

dotnet new使用命令在名为 Library 的 src 文件夹中创建类库项目。

dotnet new classlib -lang "F#" -o src/Library

运行上一个命令后生成以下目录结构:

└── FSharpSample
    ├── FSharpSample.sln
    └── src
        └── Library
            ├── Library.fs
            └── Library.fsproj

Library.fs 的内容替换为以下代码:

module Library

open System.Text.Json

let getJson value =
    let json = JsonSerializer.Serialize(value)
    value, json

使用 dotnet sln add 命令将Library项目添加到FSharpSample解决方案:

dotnet sln add src/Library/Library.fsproj

运行 dotnet build 以生成项目。 生成时将还原未解析的依赖项。

编写使用类库的控制台应用程序

使用 dotnet new 命令在名为 App 的 src 文件夹中创建控制台应用程序。

dotnet new console -lang "F#" -o src/App

运行上一个命令后生成以下目录结构:

└── FSharpSample
    ├── FSharpSample.sln
    └── src
        ├── App
        │   ├── App.fsproj
        │   ├── Program.fs
        └── Library
            ├── Library.fs
            └── Library.fsproj

Program.fs 文件的内容替换为以下代码:

open System
open Library

[<EntryPoint>]
let main args =
    printfn "Nice command-line arguments! Here's what System.Text.Json has to say about them:"

    let value, json = getJson {| args=args; year=System.DateTime.Now.Year |}
    printfn $"Input: %0A{value}"
    printfn $"Output: %s{json}"

    0 // return an integer exit code

使用 dotnet reference add 添加对Library项目的引用。

dotnet add src/App/App.fsproj reference src/Library/Library.fsproj

使用以下命令将App项目添加到FSharpSample解决方案:dotnet sln add

dotnet sln add src/App/App.fsproj

使用 dotnet restore 还原 NuGet 依赖项,并运行 dotnet build 以构建项目。

将目录切换到 src/App 控制台项目,然后运行项目并将 Hello World 作为参数传递进去。

cd src/App
dotnet run Hello World

应该看到以下结果:

Nice command-line arguments! Here's what System.Text.Json has to say about them:
Input: { args = [|"Hello"; "World"|] year = 2021 }
Output: {"args":["Hello","World"],"year":2021}

后续步骤

接下来,请查看 F# 教程 ,详细了解不同的 F# 功能。