NuGet - publishing projects to a repository server (possibly your own)


About NuGet

To reword some quotes: NuGet makes it easy to add, remove, and update libraries and tools in .Net projects. NuGet is a free, open source developer focused package management intent on simplifying the process of incorporating third party libraries into a .NET application during development. 
There are several flavors of NuGet package managers:

Set Up NuGet (one-time setup on your computer)

  1. If you don't have an API key, get one from by registering and then viewing your account info.
  2. Download NuGet and put somewhere convenient one your computer.
  3. Add NuGet.exe to your path.
  4. Set your API key (NuGet will remember it). You only need an API key if you're going to 'push' NuGet packages.
   > NuGet SetApiKey <MyApiKey>

Set Up a NuGet Published Project

  1. Set the metadata on the project (in Properties\AssemblyInfo.cs, set AssemblyTitle, etc)
  2. Use NuGet to bring in dependencies using Add Library Package (see
  3. Create the nuspec file (from the folder that contains the project file)
   > NuGet YourPackage.nuspec
  1. Edit the nuspec file. 
  •  The fields tokened like $id$, $version$, etc will be filled in later using values from your AssemblyInfo
  •  Remove fields you don't need, e.g. <iconUrl>
  •  At the least, the <projectUrl> and <licenseUrl> _should_ be filled in.

Publish the Project

  1. Ensure NuGet is up-to-date
   > NuGet update
  1. Package the project (the command below is just an example...)
   > NuGet pack -prop Configuration=Release MyProject.csproj
  1. Publish the package (either push using the command below or place the .nupkg file in the server's packages folder)
   > NuGet push <packagepath> [-source] [MyApiKeyForThisSource]

Set Up a NuGet Server

Perhaps WebMatrix can be used instead of IIS for these?
  • Option A: The traditional "easy" method... See "Creating Remote Feeds" here (requires IIS): 
  • Option B: The traditional "full-featured" method (requires IIS, Orchard gallery, others): 
  • Option C: A full-featured implementation without requiring Orchard (requires IIS):
  • Option D: An implementation for Apache/MySQL/PHP servers:
   What? This doesn't exist yet? Darn!