The NuGet Ecosystem
Before using NuGet feeds in ProGet, it's important to have a basic understanding of both NuGet (the Visual Studio extension) and the NuGet ecosystem as a whole.
- NuGet (the Visual Studio extension) – an extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects that use the .NET Framework. For example, you can use NuGet (the Visual Studio extension) to add the Microsoft's EntityFramework to your project in just a few clicks.
- NuGet Gallery – when you open up NuGet (the Visual Studio Extension), the list of 5,000+ packages you can add to your project comes from the Nuget Gallery (nuget.org/packages); this is where open source and other library providers publish their packages for easy access
- NuGet Package – a NuGet package is simply a zip file with a .nupkg extension that contains library files (e.g. DLLs) and metadata. The specific format of a .nupkg zip file is well-documented, and is generally not that important to know as tools in the NuGet ecosystem will read and create these packages for you.
- NuGet Package Repository – this is simply a server where NuGet packages are hosted and can be downloaded using NuGet (the Visual Studio Extension); the NuGet Gallery is a gigantic, public package repository and is pre-configured as the default package repository in most NuGet Client tools
- NuGet Client Tools – there are a handful of command-line and GUI-based tools that make working with NuGet Packages and NuGet Package Repositories much easier; for example, nuget.exe is a command-line tool to both consume and publish NuGet Packages, and there are plenty of other tools available
To put it another way, NuGet (the Visual Studio extension) and NuGet Client Tools both connect to NuGet Package Repositories (by default, only the NuGet Gallery) to download and install NuGet Packages.
So where does ProGet fit in? ProGet is a NuGet Package Repository that can (and probably should) act as your sole package repository. It can not only host your private NuGet packages, but it can also connect to (and cache and filter) other package repositories such as the NuGet Gallery. ProGet allows you to tap into the quickly-growing NuGet ecosystem while maintaining control and policies over how and what is used.