6.0 KiB
Raw Permalink Blame History

NuGet for Unity

Зачем это нужно

NuGet for Unity добавляет в Unity Editor клиент NuGet, чтобы можно было подтягивать обычные .NET-библиотеки прямо в Unity-проект.

Для этого проекта он нужен как вспомогательный канал только для тех зависимостей, которые:

  • действительно распространяются через nuget.org
  • совместимы с Unity и netstandard2.0
  • не завязаны на Unity-специфичный импорт через unitypackage, UPM, setup tool или Asset Store

Актуальность и канал установки

По официальному репозиторию NuGet for Unity актуальный release на момент проверки: v4.5.0 от 2025-07-19.

Официально поддерживаются два канала установки:

  • OpenUPM
  • git URL через Unity Package Manager

Для текущего проекта предпочтителен именно git URL, потому что он уже используется в Packages/manifest.json и не требует отдельной настройки scoped registry.

Рекомендуемый фиксированный URL для документации:

https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity#v4.5.0

Важно:

  • сейчас в проекте пакет подключен через git URL, но без фиксации тега
  • это удобно для быстрого старта, но менее предсказуемо, чем закрепление на конкретной версии

Текущее состояние в проекте

В репозитории уже есть рабочая конфигурация:

  • Packages/manifest.json подключает com.github-glitchenzo.nugetforunity
  • Assets/NuGet.config использует только https://api.nuget.org/v3/index.json
  • Assets/NuGet.config включает slimRestore=true
  • Assets/NuGet.config включает PreferNetStandardOverNetFramework=true
  • Assets/packages.config используется как основной список NuGet-зависимостей

На момент проверки Assets/packages.config пустой, то есть NuGet for Unity уже установлен, но внешние NuGet-пакеты через него пока не зафиксированы.

Когда использовать в этом проекте

Перед установкой любой зависимости вне Unity Registry сначала сравни два канала:

  1. официальный источник пакета
  2. пакет на nuget.org

Дальше выбирай канал по правилу:

  • если официальный источник для Unity предлагает UPM, unitypackage, setup tool или Asset Store, сначала используй его
  • NuGet for Unity применяй только тогда, когда NuGet-пакет не является урезанной .NET-версией и не отстаёт от основного источника

Практический вывод по текущим гайдам проекта:

  • UniTask: не ставить через NuGet for Unity для Unity-клиента, даже при совпадении версии; для Unity нужен UPM, а NuGet-вариант у автора позиционируется как .NET Core subset
  • Zenject/Extenject: не использовать NuGet for Unity как основной канал; официального поддерживаемого Unity-NuGet-канала нет
  • DOTween: не использовать NuGet for Unity; NuGet-пакеты сильно устарели по сравнению с официальным дистрибутивом

Как использовать после установки

  1. Открой NuGet > Manage NuGet Packages.
  2. Найди нужный пакет на nuget.org.
  3. Перед установкой проверь официальный источник пакета и сравни версии.
  4. Установи конкретную версию, а не абстрактно "latest", если пакет пойдёт в production.
  5. Убедись, что запись появилась в Assets/packages.config.
  6. Проверь, не появились ли конфликты DLL, asmdef или API compatibility.

Минимальные правила для команды

  • Не использовать NuGet for Unity как замену UPM для всех внешних пакетов подряд.
  • После добавления каждого NuGet-пакета фиксировать в профильном гайде:
    • официальный источник
    • версия в официальном источнике
    • версия на nuget.org
    • выбранный канал установки
  • Если пакет добавляет editor tooling, меню, ассеты или Unity-специфичные integration modules, почти всегда нужен не NuGet, а официальный Unity-канал.

Как проверить, что всё настроено

  • в Unity есть меню NuGet
  • окно Manage NuGet Packages открывается без ошибок
  • поиск по nuget.org работает
  • после установки пакета обновляется Assets/packages.config
  • проект продолжает компилироваться без конфликтов сборок

Официальные источники