Поделиться через


Начало работы с F# с помощью интерфейса командной строки .NET

В этой статье описывается, как приступить к работе с F# в любой операционной системе (Windows, macOS или Linux) с помощью .NET CLI. Он проходит через создание решения с несколькими проектами с помощью библиотеки классов, вызываемой консольным приложением.

Предпосылки

Чтобы начать, необходимо установить последний пакет SDK для .NET.

В этой статье предполагается, что вы знаете, как использовать командную строку и иметь предпочтительный текстовый редактор. Если вы еще не используете его, Visual Studio Code является отличным вариантом в качестве текстового редактора для F#.

Создание простого решения для нескольких проектов

Откройте командную строку или терминал и используйте команду dotnet new, чтобы создать новый файл решения:FSharpSample

dotnet new sln -o FSharpSample

Следующая структура каталогов создается после выполнения предыдущей команды:

FSharpSample
    ├── FSharpSample.sln

Запись библиотеки классов

Измените каталоги на FSharpSample.

dotnet new Используйте команду для создания проекта библиотеки классов в папке src с именем Library.

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. Эта команда добавляет проект в файл решения, чтобы решение может отслеживать и создавать его:

dotnet sln add src/Library/Library.fsproj

Выполните сборку dotnet build проекта. При сборке будут восстановлены неразрешенные зависимости.

Создание консольного приложения, использующее библиотеку классов

dotnet new Используйте команду для создания консольного приложения в папке src с именем App.

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.

Добавьте проект в AppFSharpSample решение с помощью dotnet sln add команды:

dotnet sln add src/App/App.fsproj

Восстановите зависимости NuGet с помощью dotnet restore, а затем запустите 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# .