本文介绍如何使用 .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
使用 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
使用 Library 添加对项目的引用。 此命令将一个 <ProjectReference> 元素添加到 App.fsproj 文件,它告知编译器应用项目依赖于库项目:
dotnet add src/App/App.fsproj reference src/Library/Library.fsproj
上一个命令将以下 XML 添加到 App.fsproj 文件:
<ItemGroup>
<ProjectReference Include="..\Library\Library.fsproj" />
</ItemGroup>
小窍门
如果跳过此步骤并尝试生成应用项目,则会出现编译错误,因为 Library 找不到模块。 如果发生这种情况,可以运行 dotnet add reference 命令或手动将上面显示的元素添加到 <ProjectReference> App.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# 功能。