В прошлой теме рассматривалось создание библиотеки классов в Visual Studio и ее подключение в другой проект решения. Рассмотрим, как сделать то же самое, только без Visual Studio, используя .NET CLI.
Прежде всего для создания проекта библиотеки классов в .NET CLI команде dotnet new
надо передать шаблон classlib
dotnet new classlib
Например, пусть у нас проект библиотеки классов будет располагаться в папке C:\dotnet\console\mylib. Создадим проект:
C:\Users\eugen>cd C:\dotnet\console\mylib C:\dotnet\console\mylib>dotnet new classlib Шаблон "Библиотека классов" успешно создан. Идет обработка действий после создания... Восстановление C:\dotnet\console\mylib\mylib.csproj: Определение проектов для восстановления... Восстановлен C:\dotnet\console\mylib\mylib.csproj (за 79 ms). Восстановление выполнено. C:\dotnet\console\mylib>
После выполнения этой команды будет создан проект с файлом кода Class1.cs:
Это тот же проект, что создается в Visual Studio. Например, переименуем файл Class1.cs в Person.cs, а класс Class1 в Person. Определим в классе Person простейший код:
namespace MyLib { public class Person { string name; public Person(string name) { this.name = name; } public void Print() => Console.WriteLine($"Name: {name}"); } }
Для построения библиотеки классов выполним команду
dotnet build
И после построения в проекте в папке \bin\Debug\net7.0\
можно будет найти файл mylib.dll.
Теперь подключим эту библиотеку в какой-нибудь проект. Для теста создадим новый консольный проект в папке C:\dotnet\console\helloapp
(то есть в соседней папке по
отношению к проекту mylib):
dotnet new console
Для добавления ссылки одного проекта в другой применяется команда dotnet add reference, которая имеет следующий общий формат:
dotnet add путь_к_файлу_csproj_главного_проекта reference путь_к_файлу_csproj_подключаемого_проекта
То есть в данном случае, если я нахожусь в папке проекта helloapp, то подключение библиотеки классов будет выглядеть следующим образом:
dotnet add helloapp.csproj reference ..\mylib\mylib.csproj
После успешного подключения библиотеки в главном проекте изменим файл Program.cs, чтобы он использовал класс Person из библиотеки классов:
using MyLib; // подключение пространства имен из библиотеки классов Person tom = new("Tom"); tom.Print(); // Name: Tom
Если надо удалить ссылку, то аналогичным образом применяется команда
dotnet remove путь_к_файлу_csproj_главного_проекта reference путь_к_файлу_csproj_подключаемого_проекта
Для создания решения применяется команда dotnet new sln, которая по умолчанию создает файл решения в текущей папке. Так, перейдем в терминале в папку консольного проекта и выполним команду
dotnet new sln
После этого в текущей папке будет создан файл с расширением .sln, который по умолчанию называется по имени текущей папки.
Добавим ранее созданные проекты в решение. Для этого применяется команда dotnet sln add, которая имеет следующий обобщенный формат:
dotnet sln [путь_к_файлу_решения.sln] add путь_к_файлу_csproj_добавляемого_проекта
Если файл решения расположен в текущей папке, то путь к файлу решения можно не указывать. Так, если мы по прежнему находимся в терминале в папке консольного проекта helloapp, выполним последовательно следующие команды
dotnet sln add helloapp.csproj dotnet sln add ..\mylib\mylib.csproj
Если потом потребуется, наоборот, удалить проект из решения, то применяется команда
dotnet sln [путь_к_файлу_решения.sln] remove путь_к_файлу_csproj_удаляемого_проекта