Ich bin in zwei Szenarien auf dieses Problem gestoßen.
Erstens, wenn ich versuche, meine Lösung über die Befehlszeile mit msbuild.exe zu erstellen. Zweitens, wenn ich versuche, das sln und die enthaltenen Projekte auf meinem Build-Server mit TFS und CI zu erstellen.
Ich erhalte Fehler, die behaupten, dass Referenzen fehlen. Wenn ich sowohl mein lokales Build-Verzeichnis als auch das des TFS-Servers überprüfe, sehe ich, dass der Ordner / packages nicht erstellt wird und die Nuget-Pakete nicht kopiert werden. Befolgen Sie die Anweisungen in Alexandres Antwort http://nuget.codeplex.com/workitem/1879 hat auch bei mir nicht funktioniert.
Ich habe die Wiederherstellung von Paketen über VS2010 aktiviert und festgestellt, dass Builds nur innerhalb von VS2010 funktionieren. Auch hier schlägt die Verwendung von msbuild fehl. Meine Problemumgehung ist wahrscheinlich völlig ungültig, aber für meine Umgebung funktionierte alles über einen lokalen Befehlszeilen-Build sowie über einen CI-Build in TFS.
Ich ging in. \ Nuget und änderte diese Zeile in der Datei .nuget \ NuGet.targets:
von:
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -o "$(PackagesDir)"</RestoreCommand>
zu: (beachten Sie, ohne die Anführungszeichen um die Variablen)
<RestoreCommand>$(NuGetCommand) install $(PackagesConfig) -source $(PackageSources) -o $(PackagesDir)</RestoreCommand>
Ich verstehe, dass wenn meine Verzeichnisse Leerzeichen enthalten, dies fehlschlägt, aber ich habe keine Leerzeichen in meinen Verzeichnissen, und diese Problemumgehung hat dazu geführt, dass meine Builds erfolgreich abgeschlossen wurden ... vorerst.
Ich werde sagen, dass das Aktivieren der Protokollierung auf Diagnoseebene in Ihrem Build dazu beiträgt, zu zeigen, welche Befehle von msbuild ausgeführt werden. Dies hat mich dazu gebracht, die Zieldatei vorübergehend zu hacken.