nupkg - Microsoft's Package Format

Notes about the Microsoft's nupkg format, used by their development tools and third parties.

The NuGet packaging format was designed to distribute software development resources, such as source files and compiled libraries. It has since been unofficially extended and used to distribute customer facing software.

The format is called NuGet but it has the file extension .nupkg. These two names are frequently used interchangeably.

Microsoft Clients and Servers

Microsoft have numerous development tools that create or use NuGet packages.

  • dotnet CLI
  • nuget.exe CLI
  • Package Manager Console
  • Package Manager UI
  • Manage NuGet UI
  • MSBuild

Microsoft have multiple servers and services that can be used to distribute NuGet packages – with differing implementation details and requirements:

  • MyGet
  • NuGetGallery (NuGet.org)
  • NuGet.Server on WCF
  • NuGet.Server on Web API
  • Visual Studio Team Services (VSTS)

Coexisting Versions

The server protocol associated with the NuGet format has three versions:

  • Version 1 is deprecated and no longer used;
  • Version 2 is used by Chocolatey and is OData based;
  • Version 3 is used by Microsoft and is JSON based.

Package Origin supports both version 2 and 3.