Как подключить стороннюю библиотеку или NuGet-пакет?

В Xamarin и Xamarin.Forms подключение сторонних библиотек и NuGet-пакетов — это стандартный способ расширения функциональности проекта. Сторонние библиотеки позволяют использовать готовые решения для таких задач, как доступ к SQLite, HTTP-запросы, MVVM-фреймворки, кэширование изображений, навигация, работа с Bluetooth, push-уведомления и многое другое.

NuGet — это официальный менеджер пакетов для .NET, в том числе и Xamarin, предоставляющий простой механизм установки, обновления и удаления библиотек.

Общая структура Xamarin-проекта

Xamarin.Forms-приложение обычно состоит из следующих проектов:

  • MyApp (Shared Project / .NET Standard / Portable Class Library) — общий код

  • MyApp.Android — проект Android

  • MyApp.iOS — проект iOS

  • (Иногда MyApp.UWP — проект Windows)

Некоторые NuGet-пакеты устанавливаются только в общий проект, другие требуют установки в каждую платформу отдельно.

Способы подключения библиотеки или NuGet-пакета

1. Через Visual Studio (графический интерфейс)

Шаги:

  1. Открой решение в Visual Studio.

  2. В Solution Explorer нажмите правой кнопкой мыши на нужный проект (или сразу на Solution).

  3. Выберите "Manage NuGet Packages...".

  4. Перейдите на вкладку "Browse".

  5. Введите название нужного пакета (например, Newtonsoft.Json, SQLite-net-pcl, CommunityToolkit.Mvvm).

  6. Выберите нужную версию.

  7. Нажмите Install.

  8. При необходимости согласитесь с лицензией.

Важно:

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

  • Некоторые пакеты устанавливаются только в общий проект (например, MvvmHelpers), а некоторые — только в Android/iOS (например, платформенные SDK).

2. Через консоль NuGet (Package Manager Console)

Можно устанавливать пакет вручную с помощью команды:

Install-Package \[ИмяПакета\] -ProjectName \[ИмяПроекта\] -Version \[Версия\]

Пример:

Install-Package Newtonsoft.Json -ProjectName MyApp -Version 13.0.1
Install-Package SQLite-net-pcl -ProjectName MyApp.Android
Install-Package SQLite-net-pcl -ProjectName MyApp.iOS

Если проект общий (Shared Project или .NET Standard), можно установить пакет только туда, если он не требует платформенной реализации.

3. Редактирование .csproj вручную

Можно напрямую добавить строку в .csproj:

<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>

Затем выполнить Restore.

Проверка совместимости пакета с Xamarin

Некоторые NuGet-пакеты разработаны только для .NET Framework или .NET Core и несовместимы с Xamarin. Перед установкой проверь:

  • Поддерживает ли пакет .NET Standard (желательно 2.0 или ниже).

  • Есть ли упоминания MonoAndroid, Xamarin.iOS, Xamarin.Forms в Dependencies.

В Visual Studio на вкладке DependenciesPackages можно посмотреть, корректно ли установлен пакет.

Распространённые NuGet-библиотеки в Xamarin

Название пакета Назначение
Newtonsoft.Json Работа с JSON
--- ---
SQLite-net-pcl Лёгкая SQLite ORM
--- ---
CommunityToolkit.Mvvm Модернизированный MVVM Toolkit
--- ---
FFImageLoading Кэшируемые изображения
--- ---
Xamarin.Essentials Доступ к платформенным API (геолокация, сеть)
--- ---
Xamarin.Forms.Maps Карты Google/Apple Maps
--- ---
Refit REST API-интерфейсы
--- ---
Polly Повтор запросов, управление отказами
--- ---
Autofac, Unity, DryIoc Dependency Injection
--- ---

Что делать, если библиотека не поддерживает Xamarin?

Иногда бывает, что нужная библиотека доступна только как .jar (для Android) или .framework (для iOS). В этом случае:

➤ Android: создаём Binding Library

  1. Добавьте .aar или .jar в новый проект типа Android Bindings Library.

  2. Сгенерируйте C# API (проставьте атрибуты).

  3. Подключите этот проект в основное Xamarin-приложение.

➤ iOS: создаём iOS Binding Library

  1. Добавьте .framework или .a в iOS Binding Project.

  2. Опишите API в .ApiDefinition.cs.

  3. Сгенерируйте обёртку и подключите к проекту iOS.

Это требует продвинутого знания Xamarin и Objective-C/Java, но открывает доступ к любым нативным SDK.

Возможные проблемы при подключении

⚠ Конфликты зависимостей

Если в разных проектах используются разные версии пакетов, может возникнуть конфликт. Рекомендуется синхронизировать версии.

⚠ Ошибка сборки: не найден метод или класс

Иногда после обновления пакета возникают ошибки — старые версии могут быть не совместимы с новой платформой Xamarin или AndroidX. Решение — откат на совместимую версию или обновление всей цепочки зависимостей.

⚠ Ошибки при сборке iOS

Некоторые пакеты используют native references, которые требуют Xcode и настроенного Mac. Убедитесь, что Mac Agent активен и поддерживает нужную версию SDK.

Альтернативы NuGet

  • Git Submodules — для подключения исходников сторонней библиотеки прямо в репозиторий.

  • Embedded DLL — можно вручную добавить .dll в проект и отметить её как Copy if newer, но такой подход менее гибкий.

  • Xamarin Components (устарело) — раньше был компонентный магазин, заменён NuGet.

Удаление пакета

Чтобы удалить NuGet-пакет:

  1. Откройте "Manage NuGet Packages".

  2. Перейдите на вкладку "Installed".

  3. Найдите нужный пакет и нажмите "Uninstall".

Или через консоль:

Uninstall-Package Newtonsoft.Json -ProjectName MyApp

После удаления важно проверить csproj и очистить кэш (Clean Solution + Rebuild).

Подключение сторонних библиотек через NuGet — основной и рекомендуемый способ добавления функциональности в Xamarin-приложения. Правильная установка в соответствующие проекты, внимание к версиям и зависимости от платформы обеспечивают стабильную и безопасную интеграцию функционала в кросс-платформенное приложение.