Skip to main content
Arve´s Playground

If you need a NuGet feed, what are your options?

If you are on .NET and want to share a package with “the world” use nuget.org. It is free, and getting packages does not require authentication - less hassle.

If your NuGet packages are private or of little value to the public, then you should put them somewhere else.

GitHub and Azure DevOps (and others) have NuGet servers included in the product. I have used both, and they work OK. But users need to authenticate. I.e., you can control who has access to your package, but it is extra work for each developer to create a personal access token and refresh it at regular intervals.

GitHub Packages support public feeds – but they still require authenticating with a GitHub account.

GitHub and Azure Devops also charge for egress bandwidth above the free tier. It can be expensive if your packages are large.

If you are already using GitHub, Azure DevOps, GitLab, JetBrains Spaces ++, using the built in NuGet feed service makes sense. You should try to limit the number of tools your developers need to access

You want to host your own NuGet feed? I can think of a few reasons where that makes sense.

So how do you host a NuGet feed?

There are many options as listed here. The simplest way is file share. This works best (only?) in intranet scenarios.

My preferred method of hosting most things is to get the official container from Docker Hub and run that. I use BaGetter for now on my NuGet feed.

If you only need NuGet v3 support (new .NET) then a static site might be a simple and more secure option.

This post focuses on NuGet packages, but the similar issues with authentication and egress pricing also apply to Docker registries. GitHub packages support NuGet, NPM, and Ruby Gems.