NuGetForUnity: a NuGet client that runs inside the Unity Editor
A NuGet Package Manager for Unity
At a glance
- What is it?
- NuGetForUnity is an MIT-licensed NuGet client built from scratch for the Unity Editor, with a visual window for browsing, installing, updating and uninstalling packages. It is for Unity projects that need .NET libraries Unity's own package manager cannot fetch.
- Who is it for?
- Adopt NuGetForUnity when a Unity project needs a .NET library that UPM does not carry, and you want the install, update and uninstall flow inside the Editor rather than in a separate tool. Do not adopt it if your dependency graph is already fully served by UPM packages, or if you need automated installs on a build machine, because the documented workflow is a visual Editor window.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 164 days ago.
- What is it written in?
- Mainly C#, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The gap NuGetForUnity fills in a Unity project
Unity's own package manager, UPM, resolves packages from registries that speak its protocol. NuGet is a different package management system: packages are distributed on a server, consumed by users, and support semantic versioning as well as dependencies on other packages. The two ecosystems do not talk to each other by default. NuGetForUnity is a NuGet client built from scratch to run inside the Unity Editor, which is the specific problem it solves: pulling a NuGet package and its transitive dependencies into a Unity project without leaving the Editor.
The audience is narrow but real. If your project depends only on UPM packages, you do not need this. It becomes relevant when a .NET library you want is published on nuget.org and has no UPM equivalent. The README positions the tool around a visual editor window to see available packages on the server, installed packages, and available updates, plus an interface to create and edit .nuspec files for publishing your own NuGet packages from within Unity. That second half matters: this is not only a consumer tool.
How the Editor window and dependency resolution work
The README describes three tabs. The Online tab shows packages available on the NuGet server, with a Show Prerelease toggle that decides whether alpha, beta and release candidate versions appear alongside stable releases. A Search box filters the display, and a Refresh button re-queries the server with the current settings, which the README notes is useful after pushing a new package and wanting to see it without closing and reopening the window. The name, publisher, download count and description are displayed for each entry.
The Installed tab splits into two parts. Installed packages are those directly installed as project dependencies. Implicitly installed packages are those pulled in as transitive dependencies. Uninstalling an explicitly installed package also removes its dependencies that are not a dependency of any other package or the project itself. If you click Add as explicit on an implicitly installed package, it moves into the first part of the list and will not be automatically uninstalled in that scenario. That distinction is the core of the dependency model, and it is worth understanding before you start removing things.
The Updates tab handles both directions. With Show Downgrades unchecked, packages with higher available versions are listed with a dropdown next to the Update button; Update All appears only in this mode and applies the versions currently selected in each dropdown. With Show Downgrades checked, packages with lower available versions are listed with a Downgrade button. The default selection in the dropdown is the highest newer or highest lower version depending on the checkbox. Clicking Update or Downgrade uninstalls the current package and installs the new one.
Installing NuGetForUnity and opening the package window
The README gives three install paths. The OpenUPM route uses openupm-cli against the openupm registry:
openupm add com.github-glitchenzo.nugetforunityOn Unity 2019.3 or newer you can instead add it as a git dependency. Open Window | Package Manager, click the + button in the upper-left, choose Add package from git URL, and enter:
https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnityThe README notes you can pin a version by appending #v{version}, for example #v2.0.0. On Unity 2019.2 or earlier you close the Editor, open Packages/manifest.json in a text editor, and insert this line after the opening of the dependencies object:
"com.glitchenzo.nugetforunity": "https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity",Then reopen the project. The third path is a .unitypackage file from the releases page: download it, right-click it in File Explorer, and choose Open in Unity. Once installed, launch the window with NuGet → Manage NuGet Packages. The README warns it can take several seconds to query the server before the window appears.
What the documentation does not settle
The README is a UI walkthrough. It explains what each button does and says little about what happens underneath, which leaves several practical questions open. There is no documented lock file, no described mechanism for pinning the full transitive graph, and no statement about what the installer does when two packages require incompatible versions of the same dependency. The README says only that dependencies are resolved and installed; the conflict behaviour is not described.
Offline installation is also not covered. The window queries the NuGet server, and the Refresh button exists precisely because results come from the server, so a machine without network access to that server is not addressed. If your build environment is air-gapped, you would need to confirm the behaviour yourself rather than rely on the README.
There is also a hard stop worth knowing: if the Install button is disabled, it means the package is already imported by Unity. That is a deliberate guard, not a bug, but it means NuGetForUnity will not override a package Unity already provides, and there is no documented way around it. Finally, the repository was last pushed on 2026-04-19, and the most recent release listed is v4.5.0 from 2025-07-19. The project is not archived, but the release cadence visible in the README and release list is roughly one minor version every few months, so plan for a tool that moves slowly.
NuGetForUnity compared with Unity Package Manager and OpenUPM
The closest alternative in practice is Unity Package Manager itself, extended with scoped registries such as OpenUPM. Both approaches install packages into a Unity project, and NuGetForUnity is itself distributed through OpenUPM and can be added as a UPM git dependency. The difference is the source protocol. UPM resolves from registries that implement Unity's package format; NuGetForUnity resolves from NuGet servers, which is where the .NET ecosystem publishes. If the library you want exists as a UPM package, use UPM: it is the path Unity supports natively and the one your teammates will already understand. NuGetForUnity earns its place only for packages that live on nuget.org and have no UPM packaging.
A second comparison point is the manual approach of downloading a NuGet package, extracting the relevant DLLs, and dropping them into the project. That avoids adding a tool, but you lose the dependency graph. NuGetForUnity's Installed tab tracks which packages arrived as transitive dependencies and which were added explicitly, and it removes orphaned dependencies on uninstall. A folder of hand-copied DLLs tracks none of that, and the next person to touch the project has no record of where the binaries came from.
Maintenance, licence and upgrade cost
The licence is MIT, per the badge and the LICENSE file in the repository root. MIT is permissive: it allows use, modification and redistribution with the licence and copyright notice retained. That is a statement about the licence text, not legal advice, and if your organisation has a policy on third-party dependencies you should run it past whoever owns that policy.
Upgrade cost has two layers. The tool itself updates through whichever channel you installed it from: OpenUPM, the git URL with an optional #v{version} suffix, or a fresh .unitypackage. Pinning via the git URL is the most explicit option the README documents. The second layer is the packages you install with it. The Updates tab makes version changes easy, including downgrades, and that ease cuts both ways: Update All applies whatever is selected in each dropdown, so a bulk update can move several libraries at once. The README does not document any rollback beyond reinstalling an earlier version through the same dropdown, so treat a bulk update as something to do deliberately.
The repository shows a .github directory, a CONTRIBUTING.md and a plugin-dev-readme.md, which suggests a contribution process, but the last push date of 2026-04-19 and the release list are the only maintenance signals available here.
Editorial conclusion
Adopt NuGetForUnity when a Unity project needs a .NET library that UPM does not carry, and you want the install, update and uninstall flow inside the Editor rather than in a separate tool. Do not adopt it if your dependency graph is already fully served by UPM packages, or if you need automated installs on a build machine, because the documented workflow is a visual Editor window. Before committing, verify two things: which of the three install paths (OpenUPM, git URL, .unitypackage) matches your Unity version, and whether the packages you need are already imported by Unity, in which case the Install button is disabled.
Frequently asked questions
How do I install NuGetForUnity?
The README gives three routes: the OpenUPM registry with openupm add com.github-glitchenzo.nugetforunity, a git URL added through Unity's Package Manager, or a .unitypackage file downloaded from the releases page and opened in Unity.
How do I manually add a NuGet package with NuGetForUnity?
Open NuGet → Manage NuGet Packages, go to the Online tab, search for the package, pick a version from the dropdown next to the Install button and click Install. You can also copy a list of packageIds separated by new lines or commas and use Select all from clipboard to add them all to the selection at once.
Do I need the .nuget folder with NuGetForUnity?
The README does not mention a .nuget folder or describe where installed packages are stored on disk. It documents the Online, Installed and Updates tabs and the install, update and uninstall actions, but not the on-disk layout.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/glitchenzo-nugetforunity)