Как подключить стороннюю библиотеку или 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 (графический интерфейс)
Шаги:
-
Открой решение в Visual Studio.
-
В Solution Explorer нажмите правой кнопкой мыши на нужный проект (или сразу на Solution).
-
Выберите "Manage NuGet Packages...".
-
Перейдите на вкладку "Browse".
-
Введите название нужного пакета (например, Newtonsoft.Json, SQLite-net-pcl, CommunityToolkit.Mvvm).
-
Выберите нужную версию.
-
Нажмите Install.
-
При необходимости согласитесь с лицензией.
Важно:
-
Убедитесь, что устанавливаете пакет во все проекты, если библиотека требует поддержки на каждой платформе.
-
Некоторые пакеты устанавливаются только в общий проект (например, 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 на вкладке Dependencies → Packages можно посмотреть, корректно ли установлен пакет.
Распространённые 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
-
Добавьте .aar или .jar в новый проект типа Android Bindings Library.
-
Сгенерируйте C# API (проставьте атрибуты).
-
Подключите этот проект в основное Xamarin-приложение.
➤ iOS: создаём iOS Binding Library
-
Добавьте .framework или .a в iOS Binding Project.
-
Опишите API в .ApiDefinition.cs.
-
Сгенерируйте обёртку и подключите к проекту 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-пакет:
-
Откройте "Manage NuGet Packages".
-
Перейдите на вкладку "Installed".
-
Найдите нужный пакет и нажмите "Uninstall".
Или через консоль:
Uninstall-Package Newtonsoft.Json -ProjectName MyApp
После удаления важно проверить csproj и очистить кэш (Clean Solution + Rebuild).
Подключение сторонних библиотек через NuGet — основной и рекомендуемый способ добавления функциональности в Xamarin-приложения. Правильная установка в соответствующие проекты, внимание к версиям и зависимости от платформы обеспечивают стабильную и безопасную интеграцию функционала в кросс-платформенное приложение.