Ich habe die neueste Funktion zur Wiederherstellung von Nuget-Paketen zu einer Lösung hinzugefügt, die "NuGet-Paketwiederherstellung aktivieren" verwendet: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
Allerdings hat es meinen Build-Server kaputt gemacht und ich hatte nicht die Zeit, es zu reparieren, also wollte ich es entfernen. Soweit ich weiß, gibt es dafür keine Option, daher habe ich die folgende Zeile manuell aus allen meinen * .csproj-Dateien entfernt:
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
Das Problem ist jetzt, dass jedes Mal, wenn meine * .csproj-Dateien ausgecheckt oder meine Lösung geöffnet werden, die Zeile automatisch wieder hinzugefügt wird und mein Build unterbrochen wird, wenn ich sie versehentlich einchecke :(
Irgendwelche Ideen, wie ich es dauerhaft entfernen kann?
UPDATE: Trotz der Antwort unten kommt es beim Öffnen der Lösung immer wieder zurück, jemand mit dem gleichen Problem?
quelle
Antworten:
Ich sah nicht sehr gut aus, es gibt eine weitere Eigenschaft, die den Projektdateien hinzugefügt wurde:
Sie müssen nur diese und alle diese Zeilen manuell aus allen * .csproj-Dateien entfernen:
AKTUALISIEREN:
Es stellt sich heraus, dass es ein hartnäckiger kleiner Mist ist. Wenn Sie Ihre Projektdateien manuell bearbeiten, stellen Sie sicher, dass Sie die Lösung schließen und alle Zeilen gleichzeitig aus dem Projekt löschen. Andernfalls werden sie nur erneut hinzugefügt, sobald das Projekt neu geladen wird.
UPDATE2:
Löschen Sie auch den Ordner .nuget aus dem Lösungsstamm
UPDATE3:
Eine spätere Version von NuGet fügt einen weiteren Abschnitt hinzu, den Sie entfernen müssen:
Update4
Innerhalb der
NuGet.Targets
in der Lage.nuget
Ordner gibt es einen weiteren Abschnitt, der für neue Projekte hinzugefügt wird ... es falsch wechseln.quelle
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
am Ende der .csproj-Datei auch eine befindet, die manuell entfernt werden muss.So deaktivieren Sie die Wiederherstellung von Nuget-Paketen:
Zu entfernende Linien:
Hinweis: Stellen Sie sicher, dass Sie alle Änderungen auf einmal vornehmen, bevor Sie die Lösung neu laden. Andernfalls werden sie wieder hinzugefügt.
Dies basiert auf dem folgenden Artikel: http://bartwullems.blogspot.no/2012/08/disable-nuget-package-restore.html
Möglicherweise möchten Sie auch überprüfen, ob diese Option deaktiviert ist: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
quelle
Ist es nicht diese Einstellung hier?
Optionen ... -> Nuget Package Manager -> [Deaktivieren] Ermöglichen Sie Nuget, fehlende Pakete herunterzuladen
Ich verwende Visual Studio Professional + Resharper 8.2
quelle
Restoring NuGet packages... To prevent NuGet from restoring packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages during build.'
Es ist nur eine Bestätigung, dass dies der richtige Weg sein sollte..nuget/
Ordner erstellt und Ihr Ordner so geändert werden konnte.csproj
, dass er auf eine.targets
Datei verweist . Sie sollten dasnuget.exe
auf Ihr VCS übertragen (eww, das Problem lösen, das Nuget löst!) Und solche Hässlichkeit. Heutzutagemsbuild /restore
existiert und VS das integrierte Paket wiederherstellen. Das OP fragt, wie die alte, schlechte Vorgehensweise entfernt werden kann und nicht, wie die korrekte Unterstützung für die integrierte Paketwiederherstellung von VS deaktiviert werden soll.Lösungen, die derzeit die MSBuild-integrierte Paketwiederherstellung verwenden, können auf die automatische Paketwiederherstellung migriert werden. Soweit ich weiß, sollte dies denjenigen helfen, die auf CI-Build-Probleme stoßen. (Bitte korrigieren Sie mich, wenn ich mich irre).
Weitere Informationen finden Sie im Dokument auf der Nuget-Website: Migrieren von MSBuild-integrierten Lösungen zur Verwendung der automatischen Paketwiederherstellung unter http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore
Dort gibt es Informationen zum Konvertieren mit und ohne TFS.
David Ebbo hat auch einige Informationen unter http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html veröffentlicht
quelle
Wir haben tatsächlich einen Blog-Beitrag darüber und am Ende des Beitrags wurde ein Powershell-Skript erwähnt, um bei der Migration zu helfen.
http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore
quelle
NuGet hat einen Blogbeitrag über die Migration zur automatischen Paketwiederherstellung: http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore
In dem Blog-Beitrag wird auf ein Powershell- Skript verwiesen, mit dem die erforderlichen Zeilen automatisch (und rekursiv) entfernt werden: https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/migrateToAutomaticPackageRestore.ps1
Das direkte Anbieten einer Option zum Deaktivieren der NuGet-Paketwiederherstellung wird als nicht behoben markiert: https://nuget.codeplex.com/workitem/1883
quelle
Ich folgte der akzeptierten Lösung ohne Erfolg mit 2012. Dies funktionierte jedoch,
<RestorePackages>true</RestorePackages>
auf<RestorePackages>false</RestorePackages>
und löschen Sie die<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
Zeilenuget.exe
innuget.exe.NotExe
quelle
Für alle, die noch ein Projekt mit der alten NuGet-Paketwiederherstellung bereinigen müssen, automatisiert das hier verfügbare IFix-Tool den Prozess.
Führen Sie einfach das Installationsprogramm aus (
IFix
wird hinzugefügtPATH
) und führen Sie dann Folgendes aus:Sie können es zuerst im Überprüfungsmodus ausführen, um zu sehen, was bereinigt wird:
quelle
Ich hatte das gleiche Problem. Was ich letztendlich getan habe: 1) Gehen Sie in jede Projekt-Csproj-Datei in der Lösung, öffnen Sie sie im Editor, entfernen Sie den Teil der XML und speichern Sie sie.
2) Dann habe ich alle package.config-Dateien in der gesamten Lösung entfernt.
3) Dann musste ich die Ordner .nuget und package entfernen.
Zu diesem Zeitpunkt hatte ich eine vollständig NuGet-freie Lösung.
4) Dann habe ich manuell auf alle benötigten DLLs verwiesen und auf Kompilieren geklickt, und die Lösung lief wie ein Champion, ohne dass die NuGet-Pakete benötigt wurden.
quelle
Wechseln Sie in Ihr Lösungsverzeichnis, in dem sich
[$(SolutionDir)\.nuget\nuget.targets] .nuget
Ordner undnuget.targets
Datei befinden, löschen Sie den Ordner und ändern Sie die Zeilen zum Entfernen aus Ihrem csproj ein letztes Mal .Das Problem wird nicht wieder auftreten, um Sie zu nerven.
quelle
Entfernen Sie die Datei packages.config in Ihrer Lösung.
quelle
Ich habe diese Option "Paketwiederherstellung" versehentlich beim Öffnen meines Projekts in VS2012 RC aktiviert und Fehler festgestellt, die ungefähr so aussahen:
"Fehler 1 'C: \ FolderX \ SomeProject.nuget \ nuget.exe' konnte nicht gefunden werden"
Um den Fehler zu beheben, habe ich die obigen Anweisungen befolgt, jede Projektdatei im Editor geöffnet und diese RestorePackage-Zeile entfernt.
quelle
Ich konnte dieses Problem durch folgende Schritte beheben:
1) Stellen Sie sicher, dass Sie eine Sicherungskopie aller Änderungen Ihrer aktuell ausgecheckten Dateien erstellen.
2) Löschen Sie den Lösungsordner physisch aus Ihrem C: \ (Pfad, der TFS zugeordnet ist).
3) Holen Sie sich das Neueste von TFS für Ihre Lösung.
4) Kopieren Sie (falls vorhanden) Ihre Änderungen aus dem Backup, das Sie in Schritt 1 erstellt haben.
hoffentlich hilft das !
quelle
Ich bin auf genau das gleiche Problem gestoßen und habe versucht, alle .nuget- und RestorePackage-Tags aus den Projektdateien zu entfernen, aber ein Projekt wurde einfach nicht neu geladen, egal wie gründlich ich es auf .nuget- und RestorePackages-Tags untersucht habe. Ich denke, irgendwo gibt es einige versteckte Hinweise darauf.
Am Ende war es einfacher, die Dateien zu kopieren, ein neues Projekt zu erstellen und es in die Lösung zu importieren.
quelle
Nuget saugt. Entfernen Sie einfach Nugets und entfernen oder kommentieren Sie Paketelemente aus der Datei packages.config im Stammverzeichnis der Projekte, bei denen dies ein Problem darstellt. Verwenden Sie stattdessen direkte Verweise in einen lib-Ordner.
quelle