Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
U

UnityNuGet

> 编程语言
Open source

Provides a service to install NuGet packages into a Unity project via the Unity Package Manager

739 stars0 likes1 views
WebsiteGitHub

About

Provides a service to install NuGet packages into a Unity project via the Unity Package Manager

UnityNuGet

This project provides a seamlessly integration of a curated list of NuGet packages within the Unity Package Manager.

[!IMPORTANT] This is not an official service provided by Unity Technologies Inc.

Usage

[!NOTE] Feed provided by OpenUPM.

Add scoped registry

In order to use this service you simply need to add a UPM scoped registry.

You can do this in several ways:

Via manifest.json

Manually edit your project's Packages/manifest.json file to look like the following:

json
{
  "scopedRegistries": [
    // Other registries...
    {
      "name": "Unity NuGet",
      "url": "https://unitynuget-registry.openupm.com",
      "scopes": [
        "org.nuget"
      ]
    }
  ],
  "dependencies": {
    // Other dependencies...
    "org.nuget.scriban": "2.1.0"
  }
}

Via Package Manager UI

Alternatively, follow Unity's instructions to add the scoped registry via the Package Manager UI, with the following values:

yaml
Name: Unity NuGet

Url: https://unitynuget-registry.openupm.com

Scope(s): org.nuget

Disable Assembly Version Validation

[!IMPORTANT] In Unity 2022.2+, this is the default behavior, so no action is required.

This step is necessary to ensure that binding redirects for strongly named assemblies in NuGet packages resolve correctly to paths within the Unity project.

For earlier Unity versions, uncheck Project Settings > Player > Other Settings > Configuration > Assembly Version Validation.

Verify scoped registry installation

[!WARNING] If you are encountering weird compilation errors with UnityNuGet and you have been using UnityNuGet already, it could be that we have updated packages on the server, and in that case, you need to clear the cache containing all Unity NPM packages downloaded from the registry. On Windows, this cache by default is located at: %LOCALAPPDATA%\Unity\cache\npm

See the cache locations by OS.

[!WARNING] You may also experience timeouts when installing UnityNuGet packages, with a message like:

[Package Manager Window] Error adding package: [email protected]. connect ETIMEDOUT 143.244.220.150:443 UnityEditor.EditorApplication:Internal_CallUpdateFunctions ()

Verify that you are using the new OpenUPM-based URL and not the old Azure Websites URL. You can also check OpenUPM Status to see if OpenUPM itself is having an outage.

When opening the Package Manager Window, you should see a few packages coming from NuGet with the postfix text ‎ (NuGet), like in this screenshot:

Adding a package to the registry

This service provides only a curated list of NuGet packages.

Your NuGet package needs to respect a few constraints in order to be listed in the curated list:

  • It must have non-preview versions (e.g 1.0.0 but not 1.0.0-preview.1).
  • It must provide at least .NETStandard2.0 (and optionally .NETStandard2.1) assemblies as part of its package.

You can send a PR to this repository to modify the registry.json file (don't forget to maintain the alphabetical order and format).

You also need to specify the lowest version of your package that has support for .NETStandard2.0 upward so that other packages depending on your package have a chance to work with.

Beware that all transitive dependencies of the package must be explicitly listed in the registry as well.

[!NOTE]

  • We reserve the right to decline a package to be available through this service.
  • The server will be updated only when a new version tag is pushed on the main branch.

Compatibility

Only compatible with Unity 2019.1 and potentially with newer version.

[!NOTE] This service is currently tested with Unity 2019.x, 2020.x, 2021.x, 2022.x, 2023.x and 6000.0.x.

It may not work with a more recent version of Unity.

Self-Hosted installation

To have more control of the server, it is recommended to host the service on your own. This way you can decide which specific packages to include in the registry.json file which makes the server lighter.

This project publishes a Docker image in ghcr.io that can be consumed to create a container and host it as you wish:

  • Local
  • Azure Container Apps
  • AWS Fargate
  • Google Cloud Run

There is a complete example with all available options in examples/docker.

Sign packages (Optional)

Packages are signed using the upm pack command.

To do this, you need to set the following environment variables. They are defined in the Prerequisites section of this page:

Signing:UpmServiceAccountKeyId
Signing:UpmServiceAccountKeySecret
Signing:UnityOrganizationId

If these variables are set, the packages will be signed automatically.

Accessing a private NuGet feed from Azure DevOps

[!NOTE] The Azure DevOps PAT must have Packaging (Read) permissions.

As documented in the example, it is possible to provide a custom NuGet.Config file.

To add a private feed, the following fields must be filled in:

xml

  
    
    
    //_packaging//nuget/v3/index.json" />
  
  
    
      " />
      " />
    
  

dotnet tool installation

UnityNuGet is also distributed as a dotnet tool. The difference is that in this case it does not act as a server but as a process that processes all the packages in registry.json in one pass.

This use case is useful when you simply don't want to depend on an external server and want your dependencies to be local packages.

To use it, once installed with dotnet install -g UnityNuGet.Tool simply run the command unityNuGet.

Note that an appsettings.json file must exist in the working directory from which the command is executed.

FAQ

Where is hosted this service?

It is hosted by OpenUPM.

Why can't you add all NuGet packages?

The reason is that many NuGet packages are not compatible with Unity, or do not provide .NETStandard2.0 or .NETStandard2.1 assemblies or are not relevant for being used within Unity.

Why does it require .NETStandard2.0?

Since 2019.1.x, Unity is compatible with .NETStandard2.0 and it is the .NET profile that is preferred to be used.

Having a .NETStandard2.0 for NuGet packages for Unity can ensure that the experience to add a package to your project is consistent and well supported.

As of Unity 2021.x it also supports .NETStandard2.1 so packages providing this target will be compatible with this version of Unity or newer.

See Unity's documentation on .NET profile support.

How this service is working?

This project implements a simplified compatible NPM server in C# using ASP.NET Core and converts NuGet packages to Unity packages before serving them.

At a threshold defined by UpdateInterval (10 minutes by default), packages are updated from NuGet so that if a new version is published, from the curated list of NuGet packages, it will be available through this service.

Once converted, these packages are cached on the disk on the server.

Which version of Roslyn analyzers should I use?

See the analyzer-specific page in the repository below:

  • Which version of Roslyn analyzers should I use with Unity?

License

This software is released under the BSD-Clause 2 license.

Author

Alexandre Mutel aka xoofx

Maintainer/s

Borja Domínguez aka bdovaz

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

C#asp-net-coredotnetdotnet-corenuget

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言