.NET CLI 中的 F# 入门

本文介绍如何在任何操作系统 (Windows、macOS 或 Linux) 与 .net CLI 一起开始处理 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 add reference 添加对 Library 项目的引用。

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

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

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 # 功能的详细信息。