With big traffic jams everywhere, I try to use public transport as much as possible for my daily commute. This allows me to work already before I arrive at the office. As connectivity is not that great during travel, I tend to work offline. Most of the time this works great, but I get into trouble the moment I need to add or update a NuGet package to a project in Visual Studio.
Visual Studio starts to complain when connectivity is lost and I want to add a NuGet Package:
Of course, this is not related to Visual Studio directly, if I try do this from the command line, I also get errors:
The stupid thing is that I do have the package available offline. If you go to %userprofile%\.nuget\packages, you’ll find a local copy of every package you have installed in your projects: Instead of failing back to the cache when the package source is not accessible, it just fails.Local feeds
What you can do, is setup a local feed. This will use a simple hierarchical folder structure on your file system to store packages.
To use a local folder as source, add its pathname (such as d:\packages
) to the list of sources using the Package Manager UI or the nuget sources
command
Just to test I added one package to the local feed:
This create a nested folder structure on disk:
If I now try to use this package source in Visual Studio, our installed package is found:
The .nuget folder as the local feed?
This made me wonder, could I use the local nuget cache as the source folder for our local feed?
I created a new package source and specified the %userprofile%\.nuget\packages folder as the source folder.
I could already discover the packages, that is a good start:
Also search seems to work although it is quite slow:
And even install does what it is supposed to do:
Remark: Although I was able to install offline packages this way, I still got NuGet errors for the other packages but that didn’t prevent me to successfully build the solution.
Another thing I noticed, is that for the SDKs another local feed is available: