96 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 для документации:
```text
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`
- проект продолжает компилироваться без конфликтов сборок
## Официальные источники
- https://github.com/GlitchEnzo/NuGetForUnity
- https://github.com/GlitchEnzo/NuGetForUnity/releases