Hosting Your Own Local and Remote NuGet Feeds
Note: Everything I write here is based on a very early pre-release version of NuGet (formerly known as NuPack) and is subject to change.
A few weeks ago I wrote a blog post introducing the first preview, CTP 1, of NuGet Package Manager. It’s an open source (we welcome contributions!) developer focused package manager meant to make it easy to discover and make use of third party dependencies as well as keep them up to date.
As of CTP 2 NuGet by default points to an ODATA service temporarily located at http://go.microsoft.com/fwlink/?LinkID=204820 (in CTP 1 this was an ATOM feed located at http://go.microsoft.com/fwlink/?LinkID=199193).
This feed was set up so that people could try out NuGet, but it’s only temporary. We’ll have a more permanent gallery set up as we get closer to RTM.
If you want to get your package in the temporary feed, follow the instructions at a companion project, NuPackPackages on CodePlex.com.
Some companies keep very tight control over which third party libraries their developers may use. They may not want their developers to point NuGet to arbitrary code over the internet. Or, they may have a set of proprietary libraries they want to make available for developers via NuGet.
NuGet supports these scenarios with a combination of two features:
- NuGet can point to any number of different feeds. You don’t have to point it to just our feed.
- NuGet can point to a local folder (or network share) that contains a set of packages.
For example, suppose I have a folder on my desktop named packages and drop in a couple of packages that I created like so:
I can add that director to the NuGet settings. To get to the settings, go to the Visual Studio Tools| Options dialog and scroll down to Package Manager.
A shortcut to get there is to go to the Add Package Dialog and click on the Settings button or click the button in the Package Manager Console next to the list of package sources. This brings up the Options dialog (click to see larger image).
Type in the path to your packages folder and then click the Addbutton. Your local directory is now added as another package feed source.
When you go back to the Package Manager Console, you can choose this new local package source and list the packages in that source.
Note that if you launch the Add Package Reference Dialog, you won’t see the local package feed unless you’ve made it the default package source. This limitation is only temporary as we’re changing the dialog to allow you to select the package source.
Now when you launch the Add Package Reference Dialog, you’ll see your local packages.
Please note, as of CTP 1, if one of these local packages has a dependency on a package in another registered feed, it won’t work. However, we are tracking this issue and plan to implement this feature in the next release.
Custom Read Only Feeds
Let’s suppose that what you really want to do is host a feed at an URL rather than a package folder. Perhaps you are known for your great taste in music and package selection and you want to host your own curated NuGet feed of the packages you think are great.
Well you can do that with NuGet. For step by step instructions, check out this follow-up blog post, Hosting a Simple “Read Only” NuGet Package Feed.
We imagine that the primary usage of NuGet will be to point it to our main online feed. But the flexibility of NuGet to allow for private local feeds as well as curated feeds should appeal to many.