Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как приступить к работе с 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# .