Ich habe eine ASP.NET MVC5-Anwendung, die gestern funktioniert hat, und jetzt wird folgende Fehlermeldung angezeigt, wenn ich versuche, Folgendes zu erstellen:
Dieses Projekt verweist auf NuGet-Pakete, die auf diesem Computer fehlen.
Ich habe die beiden Optionen aktiviert, mit denen Nuget fehlende Pakete automatisch herunterladen und installieren kann. Aktiviert / aktiviert. Ich habe auch versucht, alle Dateien im Paketordner zu löschen und sie dann von nuget erneut herunterladen zu lassen. Auch wenn ich nuget öffne und nach Updates suche, heißt es, dass keine installiert werden müssen. Ich kann mir nicht vorstellen, was ich sonst tun soll, um über dieses erstaunlich nervige Problem hinauszugehen.
visual-studio-2010
visual-studio
msbuild
nuget
Austin Harris
quelle
quelle
The operation has timed out.
Fehler. während des Builds. Sie müssen Ihr Build-Protokoll oder die Registerkarte Diagnose im Bildschirm Visual Studio Online Build Build Failed überprüfen .Antworten:
In meinem Fall musste ich Folgendes aus der .csproj-Datei entfernen:
In diesem Snippet können Sie sehen, woher die Fehlermeldung kommt.
Ich habe von MSBuild-Integrated Package Restore auf Automatic Package Restore umgestellt ( http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore ).
quelle
Eine Lösung wäre, Folgendes aus der .csproj-Datei zu entfernen:
Wie?
quelle
In meinem Fall geschah dies, nachdem ich meinen Lösungsordner von einem Speicherort an einen anderen verschoben, ein wenig neu organisiert und dabei die relative Ordnerstruktur geändert hatte.
Also musste ich alle Einträge ähnlich dem folgenden in meiner
.csproj
Datei von bearbeitenzu
(Beachten Sie den Wechsel von
..\packages\
zupackages\
. In Ihrem Fall kann es sich um eine andere relative Struktur handeln, aber Sie haben die Idee.)quelle
.csproj
Verwandten zu Ihrem.sln
spielt in diesem Zusammenhang keine Rolle. Was zählt, ist, ob etwas, auf das in Ihrem verwiesen wird,.csproj
woanders hingezogen ist. Wenn ja, müssen Sie das Problem beheben. Wenn Sie Ihre '.csproj' mit allem, worauf sie verweist, intakt verschoben haben, aber Ihre Position beibehalten haben, müssten.sln
Sie die.sln
Datei am neuen Speicherort von.csproj
-es reparieren , aber es wäre nicht erforderlich,.csproj
Dateien zu bearbeiten .Ich löse dieses Problem einfach, indem ich mit der rechten Maustaste auf meine Lösung und dann auf die Option NuGet-Paketwiederherstellung aktivieren klicke
(PS: Stellen Sie sicher, dass Sie die Nuget-Installation über Tools -> Erweiterungen und Updates -> Nuget Package Manager für Visual Studio 2013 haben. Wenn nicht, erweitern Sie diese Erweiterung zuerst.)
Ich hoffe es hilft.
quelle
MSBuild-Integrated Package Restore
. Das ist der alte Weg und es werden einige Gründe aufgeführt, warum Sie den neuen Weg verwenden sollten.In meinem Fall hatte es mit der Microsoft.Build.Bcl-Version zu tun. Meine Nuget-Paketversion war 1.0.21, aber meine Projektdateien zeigten immer noch auf Version 1.0.14
Also habe ich meine .csproj-Dateien geändert von:
zu:
Und der Build funktionierte wieder.
quelle
Wenn Sie TFS verwenden
Entfernen Sie die Dateien
NuGet.exe
undNuGet.targets
aus dem.nuget
Ordner der Lösung . Stellen Sie sicher, dass die Dateien selbst auch aus dem Lösungsarbeitsbereich entfernt werden. Bewahren Sie dieNuGet.Config
Datei auf, um das Hinzufügen von Paketen zur Quellcodeverwaltung weiter zu umgehen.Bearbeiten Sie jede Projektdatei (z. B. .csproj, .vbproj) in der Lösung und entfernen Sie alle Verweise auf die
NuGet.targets
Datei. Öffnen Sie die Projektdatei (en) im Editor Ihrer Wahl und entfernen Sie die folgenden Einstellungen:Wenn Sie kein TFS verwenden
Entfernen Sie den
.nuget
Ordner aus Ihrer Lösung. Stellen Sie sicher, dass der Ordner selbst auch aus dem Lösungsarbeitsbereich entfernt wird.Bearbeiten Sie jede Projektdatei (z. B. .csproj, .vbproj) in der Lösung und entfernen Sie alle Verweise auf die
NuGet.targets
Datei. Öffnen Sie die Projektdatei (en) im Editor Ihrer Wahl und entfernen Sie die folgenden Einstellungen:Referenz: Migrieren von MSBuild-integrierten Lösungen zur Verwendung der automatischen Paketwiederherstellung
quelle
Ist es möglich, dass die Pakete im falschen Ordner wiederhergestellt wurden? Überprüfen Sie, ob die Pfade in den csproj-Dateien korrekt sind.
Wenn sie unterschiedlich sind, kann dies daran liegen, dass die Pakete jetzt an einem anderen Speicherort wiederhergestellt werden. Dies kann daran liegen, dass eine NuGet.Config-Datei bei der Angabe eines Knotens wie folgt überprüft wird:
Die Pakete werden wiederhergestellt, indem die Projekte noch auf den alten Standort schauen.
quelle
Ich hatte das gleiche Problem. In meinem Fall wurde das Problem durch die Installation des Microsoft.Bcl.Build- Pakets behoben.
quelle
1.0.21
Version ohne Dateien im Paket wurde dies durch die Installation der1.0.14
Version behoben.Die folgenden Zeilen in der .csproj-Datei wurden entfernt
quelle
Eine Lösung wäre, Folgendes aus der .csproj-Datei zu entfernen:
Dieses Projekt verweist auf NuGet-Pakete, die auf diesem Computer fehlen. Aktivieren Sie die NuGet-Paketwiederherstellung, um sie herunterzuladen. Weitere Informationen finden Sie unter http://go.microsoft.com/fwlink/?LinkID=322105 . Die fehlende Datei ist {0}.
quelle
Dies sind die Schritte, mit denen ich das Problem behoben habe:
So fügen Sie Ihrer Lösung Nuget-Pakete hinzu:
quelle
Für mich hat es funktioniert, als ich gerade einen .nuget-Ordner von einer funktionierenden Lösung in die vorhandene kopiert und auf dessen Inhalt verwiesen habe!
quelle
Versuchen Sie zunächst, mit der rechten Maustaste auf die Lösung zu klicken und "Nuget-Pakete wiederherstellen" auszuwählen.
In meinem Fall hat das nicht funktioniert, daher habe ich einige Empfehlungen zum Löschen von "Importieren" und "Ziel" in der Projektdatei befolgt. Dies funktionierte für 2 meiner 3 Projekte, es wurde jedoch beim letzten ein anderer Fehler angezeigt.
Was funktionierte war, die Package Manager-Konsole zu öffnen und auszuführen:
Es dauert einige Zeit, aber da alle Pakete neu installiert werden, wird Ihr Projekt problemlos kompiliert
quelle
Ich habe das gleiche Problem. Ich bin darauf gestoßen, als ich ein vorhandenes Projekt kopiert und in den Ordner meines Lösungsverzeichnisses übertragen und als vorhandenes Projekt zu meiner leeren Lösung hinzugefügt habe. Also muss ich meine csproj-Datei bearbeiten und nach dieser bestimmten Codezeile suchen. Meistens befindet sich diese in den letzten Zeilen:
Nach dieser Zeile muss ich Folgendes auskommentieren:
Ihre Lösung fordert Sie auf, eine Änderung an Ihrem Projekt vorzunehmen. Wählen Sie einfach Alle neu laden:
Dann funktioniert alles gut, nachdem ich meine Lösung neu erstellt habe.
quelle
Ich hatte das gleiche Problem, als ich die Klassenbibliothek in meiner MVC-Webanwendung referenzierte.
Das Problem war die Nichtübereinstimmung der Versionsnummer des Nuget-Pakets zwischen zwei Projekten.
Beispiel: Meine Klassenbibliothek hatte log4net von 1.2.3, aber meine Webanwendung hatte 1.2.6
Fix: Stellen Sie einfach sicher, dass beide Projekte dieselbe Versionsnummer haben, auf die verwiesen wird.
quelle
Das Bearbeiten von .sln und .csproj ist nicht immer so einfach oder wünschenswert. Sobald Sie die Fehlerliste erhalten haben, können Sie sehen, in welchen Projekten Pakete fehlen (außerdem zeigt der Knoten Referenzen normalerweise an, dass Assemblys fehlen, es sei denn, Pakete sind Quellcode, Ressourcen, Bilder oder nur textbasierte.)
Das Entfernen und anschließende Hinzufügen der Pakete ist keine gute Idee, es sei denn, Sie verwenden die neueste Version des Pakets. Ansonsten seien Sie auf Überraschungen vorbereitet, die nicht immer angenehm sind.
Wenn das Paket beispielsweise EntityFramework ist, erhalten Sie in der NuGet-Galerie die neueste Version, die zum Zeitpunkt des Schreibens dieses Kommentars 6.1.3 ist .
Der sicherste Weg, um mit der Situation umzugehen, besteht darin, die fehlenden Pakete einzeln wiederherzustellen. Ja, eine etwas schmerzhafte Übung, aber die Jagd nach subtilen Fehlern aufgrund unterschiedlicher Paketversionen ist möglicherweise viel unangenehmer.
Nachdem dies gesagt wurde und EntityFramework erneut das fehlende Paket ist, können Sie den folgenden Befehl in der Package-Manager-Konsole ausführen:
Dadurch wird die richtige Version installiert, dh 6.0.1 , die in packages.config angegeben ist:
quelle
Ich hatte dies, als sich die Dateien csproj und sln im selben Ordner befanden (dumm, ich weiß). Sobald ich zur sln-Datei in den Ordner über dem csproj-Ordner verschoben habe, ist dies der Fall
quelle
Ich habe einen Ordner mit dem Namen '.nuget' im Lösungsstammordner erstellt und dann die Datei 'NuGet.Config' in diesem Ordner mit folgendem Inhalt hinzugefügt
Erstellen Sie dann die Datei '.nuGet.targets' wie folgt: $ (MSBuildProjectDirectory) .. \
quelle