A major benefit of such systems is that they can provide centralized access to various kinds of resources for different workloads. A good gallery will not only let you host a NuGet feed for PowerShell modules, but perhaps also a Docker registry for your company's container images.
The systems that can be used vary widely. For PowerShell modules that can be released publicly, the PowerShell Gallery is the de-facto standard. While there is an open source version of the code on GitHub, it is very likely that it will not be released in the near future.
The following tools are better suited to hosting a NuGet feed that can be used from within PowerShell. Each tool has its own advantages and disadvantages. While an open source tool that is free might be well-suited to very small scenarios that don't require much control, a big enterprise might elect to use an enterprise-grade solution or a CI/CD tool with an integrated package feed:
Product |
URL |
Description |
NuGet Gallery | https://github.com/NuGet/NuGetGallery | .NET Foundation's open source NuGet feed |
Inedo ProGet | https://inedo.com/proget | Enterprise solution with many feed types |
Visual Studio Team Services | https://visualstudio.com | CI/CD with package feed |
JFrog Artifactory | https://jfrog.com/artifactory/ | Enterprise solution with many feed types |
Inedo NuGet server (community edition) | http://nugetserver.net | Inexpensive NuGet-only feed that can also be hosted on-premises at no additional cost |
NuGet server (open source) | https://github.com/svenkle/nuget-server | Open source wrapper around the NuGet Gallery, self-contained hosting with IIS Express |
Sonatype Nexus | https://www.sonatype.com/nexus-repository-sonatype | Enterprise solution with many feed types |
JetBrains TeamCity | https://www.jetbrains.com/teamcity | CI/CD with package feed |
We can only recommend that you give all tools a try. Developers already working with JetBrains ReSharper might feel at home with TeamCity and .NET developers working with Visual Studio Team Services might appreciate the integrated package feed. In the end, the solution needs to be easy to use, scalable, and stable in order to gain traction and the trust of operations staff and developers alike.
In the following sections, we will be building our own system from scratch using the .NET Foundation's NuGet Gallery. But first of all, let's have a look at PackageManagement, one of the necessary components when interacting with package repositories.