wake-up-neo.com

entfernen Sie die Wiederherstellung des Nuget-Pakets aus der Lösung

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?

146
Wiebe Tijsma

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>
211
Wiebe Tijsma

So deaktivieren Sie die Nuget-Paketwiederherstellung:

  1. Löschen Sie den .nuget-Ordner
  2. Entfernen Sie bestimmte Zeilen aus allen CSPROJ-Dateien

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

48
angularsen

Ist es nicht diese Einstellung hier?

Optionen ... -> Nuget Package Manager -> [deaktivieren] Zulassen, dass Nuget fehlende Pakete lädt

enter image description here

Ich verwende Visual Studio Professional + Resharper 8.2

8
orad

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.

5
James Bradt

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

3
Dan Liu

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

3
Nitin Agarwal

Ich folgte der akzeptierten Lösung ohne Erfolg mit 2012. Das hat jedoch funktioniert,

  1. Schließen Sie das VS vollständig
  2. Aktualisieren Sie den <RestorePackages>true</RestorePackages> auf <RestorePackages>false</RestorePackages> und löschen Sie die <Import Project="$(SolutionDir)\.nuget\nuget.targets" />-Zeile
  3. Auch nuget.exe in nuget.exe.NotExe umbenannt
2
Daryl

Fü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
2
Simon Fox

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.

1
arvind

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.

1
Andy30acre

Entfernen Sie die Datei packages.config aus Ihrer Projektmappe.

0
Latency

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.

0
Dmitry Lyalin

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 !

0
Rajesh