NuGet packing libraries and shipping them locally
January 11, 2017
Using NuGet packages is a lot of fun and we should definitively Nugetize all the things! But managing NuGet packages and publishing them is not so trivial. What if you just want to reuse your library in many projects but have the ability to mail that assembly?
The solution is to simply package your libraries and then ship the resulting
nupkg files along your new code. So we have two questions we need to answer: how to pack up the library and how to reference
nupkg which is in your local folder.
One might ask why go through these steps if you can simply reference the dll and distribute the assembly directly.
While in simple cases that is sufficient, if the library references other NuGet packages your consumer project might not be aware of those! Using NuGet allows you to distribute assemblies along with their dependencies.
Also, I am a big fan of just using MyGet or NuGet or even setting up a private feed, but sometimes you just don’t want to bother with the correct metadata, updating, versioning, etc. The process described here should be used in those corner cases where setting up proper pipeline takes way too much resources for little gain.
Step 1: creating NuGet package from your library
First, install NuGet command line tool and ensure it is the latest version (3.5). Once you are done with that, open command line and navigate to the source code for your library.
Once there, simply type
nuget pack YourLibrary.csproj -IncludeReferencedProjects -Prop Configuration=Release
And voila, you got your project packed up. Don’t worry about metadata, you won’t publish this on NuGet anyway.
Now take the generated
YourLibrary.1.0.0.nupkg and copy it. We’ll paste it in the second step.
Step 2: referencing local NuGet package
Paste the copied library into a folder near the package consumer. For example, if you have a git repo called
MyCoolApp, create a folder inside and name it
NuGet and paste it there.
While still in your command line, navigate to the
.sln file for your consumer project. Create a file named
NuGet.config with the following content:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="LocalNuget" value=".\NuGet" /> </packageSources> </configuration>
It is important that the value above has to be a relative path from the folder containing both the
NuGet.config file to the folder created and which contains your
Step 4: profit!
Now open your solution file and you can actually install NuGet package from your local folder.
If you add both the NuGet packages and the configured
NuGet.config file to the source control, whenever you pull down the source code, everything will work.