В простых приложениях общая библиотека является фундаментальным требованием. Общая библиотека используется для того, чтобы разработчики могли повторно использовать пакеты в качестве библиотеки в проекте, а также мы можем загрузить проект на NUGET.org, чтобы другие пользователи могли загрузить и установить эти проекты в свой проект, используя библиотеку.
Зачем разделять код между проектами или сборками?
Существует несколько причин для совместного использования кода в проекте или сборке:
Повторное использование кода: Общая библиотека позволяет повторно использовать код, помещая его в библиотеку, и разработчику не нужно переписывать один и тот же код более одного раза.
Множество внешних интерфейсов: Несколько веб-приложений могут быть разработаны путем разделения веб-сборок в вашем проекте, и все эти веб-приложения используют один и тот же уровень доступа к данным.
Раздельная разработка: Раздельная разработка сборок может быть выполнена независимо.
Существует два способа совместного использования библиотеки в экосистеме смешанной разработки:
Стандартная библиотека .Net: Она может напрямую использоваться приложениями на основе совпадения версий.
Multi-targeting framework: Используется многоцелевая кросс-компилированная библиотека для более чем одной платформы.
Совместное использование библиотеки через .Net Standard или концепцию PCL
Стандарт .NET, введенный компанией Microsoft, предоставляет общую стандартную среду для API в системе разработки Microsoft, которую можно рассматривать как преемницу библиотек классов Portable, упрощающую работу с различными платформами. Стандарт .NET предоставляет курируемые наборы API, когда PCL основаны на профилях, определенных пересекающимися возможностями платформ.
Используя это, мы можем создать библиотеку, на которую может ссылаться как фреймворк .NET, так и приложение .NET Core. Убедитесь, что пакет .NET standard Library NuGet добавлен в любой проект .NET framework, который хочет ссылаться на стандартную библиотеку .NET.
Существует более полудюжины версий стандарта .Net, и неясно, на какую версию ориентироваться. В более высокой версии стандарта .Net предоставляют более широкий спектр API, а в более низкой – широкий спектр платформ.
Стандарт .NET обеспечивает ограниченную поддержку фреймворка .NET, и каждая версия поддерживается своей версией. Пример- Используйте стандарт .NET 1.2, который доступен как для ядра .NET, так и для приложения .NET framework 4.5.2. Поддержка версий ниже 1.3 довольно отрывочна.
Мультитаргетинг Framework
Основное преимущество .NET core заключается в том, что его можно использовать или внедрять кросс-платформенно.
В более крупной среде разработки .NET framework не может гарантировать свежие версии, поэтому мультитаргетинг может обеспечить широкий спектр общих библиотек. Таким образом, разработчик может компилировать один проект как для стандартного .NET, так и для .NET framework, что позволяет получить несколько наборов скомпилированных продуктов.
В visual studio 2015 мультитаргетинг довольно нестабилен из-за старого формата xproj, основанного на Json. Разработчик может компилировать более одного фреймворка, но не может использовать прямой проект, ссылающийся на проект .NET framework. Это сложно, вам приходилось либо переносить целевой проект в структуру xproject, либо распространять зависимость, ни один из этих подходов не был идеальным.
Читать далее: Библиотека классов в .NET Core
Разработчику приходится вручную редактировать файл проекта, чтобы заставить его работать. Перезагрузка может быть одним из решений после внесения каких-либо изменений в фреймворк вручную.
В следующем примере показана настройка элемента Target Framework для того, чтобы проект компилировался для более чем одного фреймворка.
<propertygroup>
<targetframeworks>net452;netstandard1.3</targetframeworks>
</propertygroup>
После компиляции проекта вы найдете в папке BIN два выходных файла, по одному для каждого указанного фреймворка, и создадите ссылку на общую сборку для проекта, собранного с .NET Framework 4.5.2.
Пакет NuGet – это вспомогательный инструмент для доступа к API сторонних разработчиков. Используя NuGet, разработчик может предоставить свою собственную библиотеку, чтобы каждый мог скачать и установить ее и использовать в своем проекте.
Давайте начнем с примера:
Начнем с создания пустого решения для размещения проекта библиотеки классов. В Visual studio пустое решение служит контейнером для одного или нескольких проектов, и вы можете добавлять связанные проекты в одно и то же решение.
Шаг 1: Создание пустого решения
Откройте visual studio 2019
Откройте стартовое окно и выберите создать новый проект.
На странице создания нового проекта найдите Blank solutiontemplate в поле поиска, а затем выберите Next.
Введите DemoLibrary в поле Project name на странице Configure your new project. Затем нажмите кнопку Создать.
Шаг 2: Создайте проект библиотеки классов.
Добавьте в решение новый проект библиотеки классов .NET с именем “DemoLibrary”.
Щелкните правой кнопкой мыши на решении и выберите Add->New Project в Solution Explorer .
Найдите Library на странице Add new project в поле поиска. Выберите C# из списка языков, а затем выберите Все платформы из списка платформ. Выберите шаблон Class Library и нажмите на кнопку Next.
Введите DemoLibrary в поле Project name на странице Configure your new project и нажмите на кнопкуNext.
Замените Class.cs следующим кодом, переименуйте файл с именем StringLibrary и сохраните файл.
using System;
namespace DemoLibrary
{
public static class StringLibrary
{
public static bool StartsWithLower(this string str)
{
if (string.IsNullOrWhiteSpace(str))
return false;
char ch = str[0];
return char.IsLower(ch);
}
}
}
Библиотека классов DemoLibrary.StringLibrary содержит метод StringLibrary. Этот метод возвращает булево значение, если строка начинается с нижнего символа.Метод Char.IsLower() возвращает true, если символ является нижним.
Выберите Build->Build solution или нажмите CTR+SHIFT+B, чтобы убедиться, что проект компилируется без ошибок.
Шаг 3: Добавьте консольное приложение в решение
Добавьте консольное приложение “DemoConsole”, которое использует библиотеку классов. Это приложение будет предлагать пользователю ввести строку и возвращать true, если строка содержит нижний символ.
Добавьте консольное приложение .Net с именем “DemoConsole” в решение.
Щелкните правой кнопкой мыши на решении и выберите Add->New Project from Solution Explorer.
В поисковой строке найдите Console на странице Add new project. Выберите C# из списка языков, а затем выберите Все платформы из списка платформ. Выберите шаблон Console Application и нажмите на кнопку Next.
Введите DemoConsole в поле Project name на странице Configure your new project и нажмите на кнопку Next.
2.Замените файл Program.cs следующим кодом:
using System;
using DemoLibrary;
namespace DemoConsole
{
class Program
{
static void Main(string[] args)
{
int row = 0;
do
{
if (row == 0 || row >= 25)
ResetConsole();
string input = Console.ReadLine();
if (string.IsNullOrEmpty(input)) break;
Console.WriteLine($"Input: {input} {"Begins with lowercase? ",30}: " +
$"{(input.StartsWithUpper() ? "Yes" : "No")}n");
row += 3;
} while (true);
return;
// Declare a ResetConsole local method
void ResetConsole()
{
if (row > 0)
{
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
}
Console.Clear();
Console.WriteLine("nPress <enter> only to exit; otherwise, enter a string and press <enter>:n");
row = 3;
}
}
}
}
</enter></enter>
Переменная row используется для ведения подсчета количества строк, записанных в консольном приложении, когда ее значение больше 25, код очищает консольное приложение.
Вы ищете выделенного разработчика ASP.NET Core? Ваш поиск закончится здесь.
Шаг 4: Добавьте ссылку на проект
Консольное приложение не может получить доступ к библиотеке классов. Чтобы получить доступ к методу библиотеки, создайте ссылку проекта на проект библиотеки классов.
Щелкните правой кнопкой мыши на узле Dependency проекта DemoConsole и выберите Add project reference в Solution Explorer.
Выберите проект DemoLibrary и нажмите OK, В диспетчере ссылок…
Шаг 5: Запустите приложение
Установите приложение DemoConsole в качестве стартового проекта в проводнике решений.
Запустите приложение, нажав CTRL+F5.
Заключение
В этом блоге мы рассмотрели, как создать общую библиотеку в asp.net core, которая используется разработчиками для повторного использования пакетов в качестве библиотеки в проектах, а также рассмотрели примеры.