NuGet ist ja mittlerweile weit verbreitet, aber eine Frage stellt sich natürlich immer noch: Checkt man die NuGet Packages ein oder nicht?
In meinem kleinen Side-Projekt, welches auf GitHub liegt und ich über AppVeyor auch bauen lasse nutze ich das Package Restore Feature von NuGet, d.h. in meinem Repository befindet sich kein NuGet Package mehr, sondern es wird vor dem Bauen geprüft ob das Package da ist und wenn nicht wird es runtergeladen.
Die “eincheck”-Variante hat auch seine Vorteile, aber in meinem Setting hier ist dies unnötig, da ich ohnehin auf diverse andere Dienste vertraue. Also zur Sache:
“Enable NuGet Package Restore” & Fertig, oder?
Nein.
Diese Option die aktuell noch im NuGet Tooling drin ist braucht es nicht mehr:
Diese Option benötigt es nicht mehr! Mehr dazu in diesem Blogpost “The right way to restore NuGet packages”. Um es kurz zu machen: Im Visual Studio passiert dies “automatisch” – es benötigt nicht diese Magic.
Änderung seit NuGet 2.7
Diese Änderung wurde in NuGet 2.7 gemacht. In dem Blogpost ist auch beschrieben wie man seine Projekte wieder davon befreien kann.
Und was ist nun mit den Buildservern?
Auf dem Buildserver (AppVeyor in meinem Beispiel) kam immer diese Fehlermeldung:
“C:\projects\code-inside-web\CodeInside.Web\CodeInside.Web.csproj(338,5): error : The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568.”
Der Link zeigt auch wieder auf den MSDN Blog.
Der Fix für das Problem auf dem Buildserver
Generell muss man aktuell noch manuell den “nuget restore” Command aufrufen. Im Falle von AppVeyor macht man dies einfach (Doku)so:
Damit sollte es wieder klappen.