Ich habe Lösung und Projekt in Visual Studio 2012.
Das Projekt hat eine Datei packages.config
im Stammverzeichnis des Projekts.
Nehmen wir für die Zwecke dieser Frage an, dass ich diese Bibliotheken versehentlich aus dem References
Abschnitt meines Projekts entfernt habe.
Beim Aufrufen des NuGet-Paketmanagers meldet die Benutzeroberfläche weiterhin ein Häkchen neben diesen Paketen, um anzuzeigen, dass sie installiert sind.
Die einzige Möglichkeit, diese Situation zu beheben, besteht darin, alle Einträge zu löschen packages.config
, wodurch das Problem behoben wird, dass die NuGet-Schnittstelle sie als installiert meldet, und alle erneut hinzuzufügen.
Gibt es einen klügeren Weg? Ich hatte gehofft, dass die Aktivierung von "Enable Nuget zur Wiederherstellung fehlender Pakete" dieses Problem lösen würde, aber es scheint nichts zu bewirken.
Sie müssen die NuGet-Paketwiederherstellung auf VS-Lösungsebene aktivieren, damit die Wiederherstellung des fehlenden Pakets funktioniert.
quelle
Für den Fall, dass dies jemandem hilft, war für mich keines der oben genannten Punkte ausreichend. Ich konnte immer noch nicht bauen, VS konnte die Referenzen immer noch nicht finden. Der Schlüssel bestand einfach darin, die Lösung nach dem Wiederherstellen der Pakete zu schließen und erneut zu öffnen .
Hier ist das Szenario (mit Visual Studio 2012):
Sie öffnen eine Lösung mit fehlenden Paketen. Die Referenzen zeigen, dass VS sie nicht finden kann. Es gibt viele Möglichkeiten , die fehlenden Pakete wiederherzustellen, einschließlich
nuget restore
wenn Sie das Kommandozeilen-Nuget installiert habenUnabhängig vom Ansatz werden diese Referenzen jedoch weiterhin als fehlend angezeigt. Und wenn Sie bauen, wird es fehlschlagen. Seufzer. Wenn Sie jedoch die Lösung schließen und erneut öffnen, überprüft VS diese netten
<HintPath>
s erneut und stellt fest, dass die Pakete wieder dort sind, wo sie hingehören, und alles ist in Ordnung mit der Welt.Aktualisieren
Wird in Visual Studio immer noch nicht angezeigt, dass Sie über das Paket verfügen? Zeigen Sie immer noch eine Referenz an, die nicht aufgelöst werden kann?
<HintPath>
Stellen Sie sicher, dass die Version des wiederhergestellten Pakets genau mit der in Ihrer .csproj-Datei übereinstimmt. Selbst eine kleine Fehlerbehebungsnummer (z. B. 1.10.1 bis 1.10.2) führt dazu, dass die Referenz fehlschlägt. Sie können dies beheben, indem Sie entweder Ihre csproj-XML direkt bearbeiten oder indem Sie die Referenz entfernen und eine neue erstellen, die auf die neu wiederhergestellte Version im Paketverzeichnis verweist.quelle
.csproj
Datei, um sicherzustellen, dass die Versionsnummern übereinstimmen, hat bei mir funktioniert. Vielen Dank!Die von @jmfenoll bereitgestellte Lösung funktioniert zwar, wird jedoch auf die neuesten Pakete aktualisiert. In meinem Fall wurden nach der Installation von Beta2 (Vorabversion) alle Bibliotheken auf RC1 aktualisiert (mit einem Fehler). Somit erledigt die obige Lösung nur die Hälfte der Arbeit.
Wenn Sie sich in der gleichen Situation wie ich befinden und Ihr Projekt mit der genauen Version der NuGet-Pakete synchronisieren möchten, die Sie in Ihrem / haben oder angegeben haben, kann Ihnen
packages.config
dieses Skript helfen. Kopieren Sie es einfach und fügen Sie es in Ihre Package Manager-Konsole einUnd dann führen Sie es entweder mit einem bestimmten Paketnamen wie aus
oder für alle Pakete wie
Credits gehen an Dan Haywood und seinen Blog-Beitrag .
quelle
Das folgende Skript kann im Fenster der Package Manager-Konsole ausgeführt werden und entfernt alle Pakete aus jedem Projekt in Ihrer Lösung, bevor Sie sie erneut installieren.
Dadurch wird das Installationsskript jedes Pakets erneut ausgeführt, wodurch die fehlenden Assemblyreferenzen wiederhergestellt werden sollen. Leider werden alle anderen Dinge, die Installationsskripte tun können - wie das Erstellen von Dateien und das Ändern von Konfigurationen - auch wieder vorkommen. Sie möchten wahrscheinlich mit einer sauberen Arbeitskopie beginnen und mit Ihrem SCM-Tool auswählen, welche Änderungen in Ihrem Projekt beibehalten und welche ignoriert werden sollen.
quelle
Ich habe die DLLs manuell hinzugefügt. Klicken Sie im Projekt mit der rechten Maustaste auf Referenzen, wählen Sie Referenz hinzufügen und klicken Sie dann im Dialogfeld auf die Schaltfläche Durchsuchen. Die NuGet-DLLs befinden sich im Paketverzeichnis der Lösung. Um deren Namen zu erhalten, können Sie mit der rechten Maustaste auf Referenzen in einem anderen Projekt klicken, das ordnungsgemäß funktioniert, Eigenschaften auswählen und in der Pfadeigenschaft nachsehen.
quelle
In Visual Studio 2015 (Soulution unterliegt der Quellcodeverwaltung, MVC-Project) ist csano's
Update-Package -Reinstall -ProjectName Your.Project.Name
funktioniert, aber es hat einige Schreibsperren durcheinander gebracht.Ich musste den "Pakete" -Folder vorher manuell löschen. (Es schien wegen der Quellcodeverwaltung gesperrt zu sein).
Außerdem musste ich das MVC-Paket vom NuGet Package Manager neu installieren.
quelle
Dieses Skript installiert alle Pakete eines Projekts neu, ohne Abhängigkeiten durcheinander zu bringen oder Abhängigkeiten zu installieren, die möglicherweise absichtlich entfernt wurden. (Mehr für ihre Teilepaketentwickler.)
quelle
Nur für den Fall, dass es jemandem hilft - In meinem Szenario habe ich einige gemeinsam genutzte Bibliotheken (die ihre eigenen TFS-Projekte / -Lösungen haben), die alle zu einer Lösung zusammengefasst sind.
Nuget würde Projekte erfolgreich wiederherstellen, aber die DLL würde fehlen.
Das zugrunde liegende Problem war, dass Ihre Lösung zwar über einen eigenen Paketordner verfügt und diese korrekt in diesem Ordner wiederhergestellt hat, die Projektdatei (z. B. .csproj) jedoch auf ein anderes Projekt verweist, auf das das Paket möglicherweise nicht heruntergeladen wurde. Öffnen Sie die Datei in einem Texteditor, um zu sehen, woher Ihre Referenzen stammen.
Dies kann auftreten, wenn Pakete auf verschiedenen miteinander verbundenen gemeinsam genutzten Lösungen verwaltet werden. Da Sie wahrscheinlich sicherstellen möchten, dass sich alle DLLs auf derselben Ebene befinden, können Sie dies auf der obersten Ebene festlegen. Dies bedeutet, dass manchmal nach einer völlig anderen Lösung für eine referenzierte DLL gesucht wird. Wenn Sie also nicht alle Projekte / Lösungen heruntergeladen und auf dem neuesten Stand haben, tritt möglicherweise das oben genannte Problem auf.
quelle
Ich muss @Juri zustimmen, dass die äußerst beliebte Antwort von jmfenoll nicht vollständig ist. Bei fehlerhaften Referenzen gebe ich an, dass Sie die meiste Zeit nicht auf das neueste Paket aktualisieren möchten , sondern Ihre Referenzen nur auf die aktuellen Versionen korrigieren, die Sie gerade verwenden. Und Juri bot eine praktische Funktion
Sync-References
, um genau das zu tun.Wir können jedoch noch ein bisschen weiter gehen und die Flexibilität ermöglichen, sowohl nach Projekt als auch nach Paket zu filtern:
quelle
Ich hatte das gleiche Problem mit fehlenden Referenzen. Unter meinem Szenario:
Alle Versionsnummern in Projekt und Paketen stimmen überein. Die Nuget-Wiederherstellung (auf alle Arten) hat nicht funktioniert.
So habe ich es behoben: Löschen Sie einfach die Paketordner im Lösungsstamm und führen Sie die Nuget-Wiederherstellung aus. Zu diesem Zeitpunkt werden die DLLs korrekt heruntergeladen und können für die fehlenden Referenzen hinzugefügt werden.
quelle
Ich habe auch sehr unter diesem Problem gelitten. In meinem Fall wurde das Herunterladen von fehlendem NuGet überprüft (aber es wird nicht wiederhergestellt) und ich kann nicht deinstallieren und neu installieren, da ich einige der installierten Pakete geändert habe ... also:
Ich habe gerade den Cache gelöscht und neu aufgebaut und es hat funktioniert. (Tools-Option-Nuget-Paketmanager - Allgemein)
Auch dieser Link hilft https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore .
quelle
Deinstallieren Sie alle Pakete und entfernen Sie Abhängigkeiten
Löschen Sie den Paketordner im Stammverzeichnis des Projekts
Kopieren Sie die modifizierte package.config in den Stammordner der Website
Führen Sie diesen Code aus, um das Projekt wiederherzustellen
quelle