Mam biegać w ten problem w dwóch scenariuszach.
Po pierwsze, podczas próby zbudowania rozwiązania z wiersza poleceń przy użyciu msbuild.exe. Po drugie, kiedy próbuję zbudować sln i zawierające projekty na moim serwerze kompilacji za pomocą TFS i CI.
Dostaję błędy, twierdząc, że brakuje referencji. Podczas sprawdzania zarówno mojego lokalnego katalogu budowania, jak i serwera TFS widzę, że folder/packages nie został utworzony, a pakiety nugetów nie są kopiowane. Postępowanie zgodnie z instrukcjami wymienionymi w odpowiedzi Alexandre http://nuget.codeplex.com/workitem/1879 również nie zadziałało.
Mam włączone pakiety przywracania za pośrednictwem VS2010 i widziałem tylko kompilacje działa tylko z poziomu VS2010. Ponownie, użycie msbuild nie powiodło się. Moje obejście jest prawdopodobnie całkowicie nieważne, ale dla mojego środowiska to wszystko działało z linii poleceń zbudowanej lokalnie, a także z budowania CI w TFS.
Wszedłem \ Nuget i zmienił ten wiersz w pliku .nuget \ NuGet.targets.
od:
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -o "$(PackagesDir)"</RestoreCommand>
do: (wypowiedzenia, bez cudzysłowów wokół zmiennych)
<RestoreCommand>$(NuGetCommand) install $(PackagesConfig) -source $(PackageSources) -o $(PackagesDir)</RestoreCommand>
rozumiem, że jeśli moje katalogi mają spacje w nich, to się nie powiedzie, ale nie mam miejsca w swoich katalogach i tak to obejście dostałem buduje się zakończyć powodzeniem ... dla ti ja jestem.
Powiem, że włączenie diagnostycznego poziomu logowania w twojej kompilacji pomoże ci pokazać, jakie polecenia są wykonywane przez msbuild. To właśnie doprowadziło mnie do tymczasowego hakowania pliku celów.
Czy w dzienniku wyjściowym pojawia się plik nuget.exe? – Pranav
Co ważne: czy widzisz jakieś błędy w dzienniku wyjściowym? – maartenba