Ich habe die letzte 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
Mein Build-Server ist jedoch kaputt gegangen, und ich hatte keine Zeit, ihn zu reparieren. Deshalb wollte ich ihn 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 nun, dass jedes Mal, wenn meine * .csproj-Dateien ausgecheckt oder meine Lösung geöffnet werden, die Zeile automatisch erneut hinzugefügt wird, wodurch mein Build unterbrochen wird, wenn ich sie versehentlich einchecke :(
Irgendwelche Ideen, wie ich es dauerhaft entfernen kann?
UPDATE: Trotz der unten stehenden Antwort kommt es beim Öffnen der Lösung immer wieder vor, wer hat das gleiche Problem?
Ich sah nicht gut aus, es wurde eine weitere Eigenschaft zu den Projektdateien hinzugefügt:
<RestorePackages>true</RestorePackages>
Müssen Sie diese sowie alle diese Zeilen manuell aus allen * .csproj-Dateien entfernen:
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
UPDATE:
Es stellt sich heraus, dass es ein hartnäckiger Fehler ist. Wenn Sie Ihre Projektdateien manuell bearbeiten, müssen Sie die Lösung schließen und alle Zeilen gleichzeitig aus dem Projekt löschen. Andernfalls werden sie nur erneut hinzugefügt, wenn das Projekt neu geladen wird ...
UPDATE2:
Löschen Sie auch den Ordner .nuget aus dem Lösungsstamm
UPDATE3:
Eine neuere Version von NuGet fügt einen weiteren Abschnitt hinzu, den Sie entfernen müssen:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.Microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
Update4
Im NuGet.Targets
, der sich im Ordner .nuget
befindet, gibt es einen weiteren Abschnitt, der neuen Projekten hinzugefügt wird.
<!-- We need to ensure packages are restored prior to Assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'false'">
RestorePackages;
$(BuildDependsOn);
</BuildDependsOn>
So deaktivieren Sie die Nuget-Paketwiederherstellung:
Zu entfernende Zeilen:
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<RestorePackages>true</RestorePackages>
Hinweis: Stellen Sie sicher, dass Sie alle Änderungen auf einmal vornehmen, bevor Sie die Lösung erneut laden, da sie sonst wieder hinzugefügt wird.
Dies basiert auf dem folgenden Artikel: http://bartwullems.blogspot.no/2012/08/disable-nuget-package-restore.html
Vielleicht möchten Sie noch einmal überprüfen, ob diese Option deaktiviert ist: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
Ist es nicht diese Einstellung hier?
Optionen ... -> Nuget Package Manager -> [deaktivieren] Zulassen, dass Nuget fehlende Pakete lädt
Ich verwende Visual Studio Professional + Resharper 8.2
Lösungen, die derzeit MSBuild-Integrated-Paketwiederherstellung verwenden, können zur automatischen Paketwiederherstellung migriert werden. Soweit ich weiß, sollte dies denjenigen helfen, die auf CI-Probleme stoßen. (Bitte korrigieren Sie mich, wenn ich mich irre).
Bitte beachten Sie das Dokument auf der Nuget-Website: Migration von MSBuild-Integrated-Lösungen zur Verwendung der automatischen Wiederherstellung von Paketen 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.
Wir haben tatsächlich einen Blog-Post darüber und am Ende des Posts wurde ein Powershell-Skript erwähnt, um die Migration zu erleichtern.
http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore
NuGet hat einen Blogeintrag über die Migration auf automatische Paketwiederherstellung: http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore
Es gibt ein Powershell Skript, auf das im Blog-Beitrag verwiesen wird, das sich um das automatische Entfernen der erforderlichen Zeilen kümmert (und rekursiv): https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/migrateToAutomaticPackageRestore.ps1
Das direkte Anbieten einer Option zum Deaktivieren der NuGet-Paketwiederherstellung wird als Nicht behebbar markiert: https://nuget.codeplex.com/workitem/188
Ich folgte der akzeptierten Lösung ohne Erfolg mit 2012. Das hat jedoch funktioniert,
<RestorePackages>true</RestorePackages>
auf <RestorePackages>false</RestorePackages>
und löschen Sie die <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
-Zeilenuget.exe
in nuget.exe.NotExe
umbenanntFür alle, die noch ein Projekt mithilfe des alten NuGet-Pakets Restore bereinigen müssen, automatisiert das zur Verfügung stehende IFix-Tool here den Prozess.
Führen Sie einfach das Installationsprogramm aus (IFix
wird zu PATH
hinzugefügt) und führen Sie dann Folgendes aus:
IFix nugetrestore --fix
Sie können es zuerst im Überprüfungsmodus ausführen, um zu sehen, was es aufräumt:
IFix nugetrestore --check
Wechseln Sie in Ihr Lösungsverzeichnis, in dem sich der Ordner [$(SolutionDir)\.nuget\nuget.targets]
.nuget
befindet, und nuget.targets
-Datei. Löschen Sie den Ordner Und ändern Sie die Zeilen zum Entfernen der Zeilen aus Ihrem Ordner csproj ein letztes Mal.
Das Problem wird nicht wiederkommen, um Sie erneut zu nerven.
Ich hatte das gleiche Problem. Was ich am Ende getan habe: 1) Gehen Sie in jede Projekt-.csproj-Datei in der Projektmappe, öffnen Sie sie in Notepad, entfernen Sie den Teil der XML-Datei und speichern Sie sie.
2) Dann habe ich alle package.config-Dateien in der gesamten Lösung entfernt.
3) Dann musste ich die .nuget- und Paketordner 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 compile geklickt. Die Lösung lief wie ein Champion, ohne dass die NuGet-Pakete benötigt wurden.
Entfernen Sie die Datei packages.config aus Ihrer Projektmappe.
Ich habe diese Option "Paket wiederherstellen" versehentlich aktiviert, während ich mein Projekt in VS2012 RC öffnete, und es wurden Fehlermeldungen angezeigt, die in etwa so aussahen:
"Fehler 1 'C:\FolderX\SomeProject.nuget\nuget.exe' konnte nicht gefunden werden" "
Um den Fehler zu beheben, befolgte ich die obigen Anweisungen, öffnete jede Projektdatei in Notepad und entfernte die RestorePackage-Zeile.
Ich konnte dieses Problem mit den folgenden Schritten beheben:
1) Stellen Sie sicher, dass Sie eine Sicherungskopie aller aktuellen Änderungen der 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 !