I'm trying to build a solution with packages
content missing (except repositories.config
inside) with MSBuild 12.0. I expect it to auto restore all missing packages before building but this is not the case - MsBuild reports tons of errors:
"are you missing a using directive or an assembly reference?"
NuGet Manager is 2.7 (I see this in Visual Studio 2013 about box). I even tried to pass EnableNuGetPackageRestore=true
parameter - no luck. What am I missing?
If you are using Visual Studio 2017 or later which ships with MSBuild 15 or later, and your .csproj files are in the new PackageReference
format, the simplest method is to use the new MSBuild Restore
target.
No-one has actually answered the original question, which is "how do I get NuGet packages to auto-restore when building from the command-line with MSBuild?" The answer is: unless you are using the "Enable NuGet package restore" option (which is now deprecated as per this reference), you can't (but see below). If you are trying to do e.g. automated builds on a CI server, this sucks.
However there is a slightly roundabout way to get the desired behaviour:
nuget restore
which will auto-download all the missing packages.msbuild
to build your solution.Aside: while the new and recommended way to do auto package restore involves less clutter in your version control, it also makes command-line package restore impossible unless you jump through the extra hoop of downloading and running nuget.exe
. Progress?