Создание и подключение библиотеки классов

Последнее обновление: 15.12.2023

Нередко различный функционал, который выполняет определенную задачу, оформляется в виде отдельной библиотеки, которая компилируется в файл dll и затем может подключаться в другие проекты. Благодаря этому мы можем определить один и тот же функционал в виде библиотеки классов и подключать в различные проекты или передавать на использование другим разработчикам. Рассмотрим, как создать и подключить библиотеку классов.

Добавление библиотеки классов с помощью .NET CLI

Для создания проекта библиотеки классов в .NET CLI команде dotnet new надо передать шаблон classlib:

dotnet new classlib

Например, пусть у нас проект библиотеки классов будет располагаться в папке C:\fsharp\console\ и который будет называться "Messages". Создадим проект:

C:\Users\eugen>cd C:\fsharp\console

C:\fsharp\console>dotnet new classlib -lang "F#" -o messages
Шаблон "Библиотека классов" успешно создан.

Идет обработка действий после создания...
Восстановление C:\fsharp\console\messages\messages.fsproj:
  Определение проектов для восстановления...
  Восстановлен C:\fsharp\console\messages\messages.fsproj (за 382 ms).
Восстановление выполнено.


C:\fsharp\console>

После выполнения этой команды будет создан проект с файлом кода Library.fs:

добавление библиотеки классов на языке F#

В файле Library.fs определен простейший код:

namespace messages

module Say =
    let hello name =
        printfn "Hello %s" name

В данном файле определен модуль Say, в котором определена функция hello, которая принимает 1 параметр и выводит на консоль сообщение. Причем сам модуль Say располагается в пространстве имен messages

Мы можем изменить этот код, что-то еще добавить, но в принципе его достаточно для демонстрации работы с библиотекой классов. Для построения этой библиотеки классов перейдем к папке проекта и выполним команду dotnet build:

C:\fsharp\console>cd messages
C:\fsharp\console\messages>dotnet build
Версия MSBuild 17.8.3+195e7f5a3 для .NET
  Определение проектов для восстановления...
  Все проекты обновлены для восстановления.
  messages -> /Users/eugene/Documents/fsharp/console/messages/bin/Debug/net8.0/messages.dll

Сборка успешно завершена.
    Предупреждений: 0
    Ошибок: 0

Прошло времени 00:00:03.71
C:\fsharp\console\messages>

После выполнения команды в проекте в папке bin/Debug/net8.0 мы сможем найти файл messages.dll - файл скомпилированной библиотеки, которую мы сможем подключать в другие проекты.

Подключение библиотеки классов

Теперь подключим эту библиотеку в какой-нибудь проект. Для теста создадим в папке C:\fsharp\console\ новый консольный проект, который пусть называется "helloapp" (то есть в соседней папке по отношению к проекту messages):

C:\fsharp\console>ldotnet new console -lang "F#" -o helloapp
Шаблон "Консольное приложение" успешно создан.

Идет обработка действий после создания...
Восстановление C:\fsharp\console\helloapp\helloapp.fsproj:
  Определение проектов для восстановления...
  Восстановлен C:\fsharp\console\helloapp\helloapp.fsproj (за 1,38 sec).
Восстановление выполнено.


C:\fsharp\console>
Подключение библиотеки классов в проект на F#

Для добавления ссылки одного проекта в другой применяется команда dotnet add reference, которая имеет следующий общий формат:

dotnet add путь_к_файлу_fsproj_главного_проекта reference путь_к_файлу_fsproj_подключаемого_проекта

То есть в данном случае, если я нахожусь в папке проекта helloapp, то подключение библиотеки классов будет выглядеть следующим образом:

dotnet add helloapp.fsproj reference ..\messages\messages.fsproj

Вывод команды

C:\fsharp\console>cd helloapp
C:\fsharp\console\helloapp>dotnet add helloapp.fsproj reference ..\messages\messages.fsproj
Ссылка "..\messages\messages.fsproj" добавлена в проект.
C:\fsharp\console\helloapp>

И если в проекте консольного приложения мы откроем главный файл проекта helloapp.fsproj, то увидим в нем следующие строки:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="Program.fs" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\messages\messages.fsproj" />
  </ItemGroup>

</Project>

Здесь элемент

<ProjectReference Include="..\messages\messages.fsproj" />

как раз подключает в проект библиотеки классов messages. И также подключение проекта библиотеки классов можно было бы сделать вручную, просто изменив данный файл проекта.

После успешного подключения библиотеки в главном проекте helloapp изменим файл Program.fs, чтобы он использовал модуль Say из библиотеки классов:

open messages   // подключаем пространство имен
Say.hello "Tom"     // вызываем функцию hello

Консольный вывод программы:

C:\fsharp\console\helloapp>dotnet run
Hello Tom
C:\fsharp\console\helloapp>

Удаление ссылки на проект

Если надо удалить ссылку, то аналогичным образом применяется команда

dotnet remove путь_к_файлу_fsproj_главного_проекта reference путь_к_файлу_fsproj_подключаемого_проекта
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850