C# visual studio, wie verlegen nuget-Paket-Ordner?
Ich mietete einen Auftragnehmer, um einige Codierung für mich. Er setup nuget.config in die Lösung Ordner mit dem folgenden Pfad:
<configuration>
<solution>
<add key="disableSourceControlIntegration"
value="true" />
</solution>
<config>
<add key="repositoryPath"
value="../lib" />
</config>
</configuration>
Und ich bin auch nicht glücklich über seine Entscheidung: dadurch wird das nuget-Paket-Ordner außerhalb des Projektmappen-Ordner. Ich kann leicht ändern Sie den repository-Pfad, indem Sie einfach die Einstellung:
value="../<mySolutionFolder>/lib" />
Jedoch wenn ich dies mache eine seltsame Sache passiert: jede einzelne Referenz, die ich in meine Lösung ist nun gebrochen. Und nichts, was ich ändern in der .csproj-Dateien oder andere *.config-Dateien erlauben, meine Projekte zu finden, die Ihre Referenzen.
Die einzige Lösung ist es, neu erstellen Sie jedes Projekt in meiner Lösung von vorne anfangen, und hinzufügen->vorhandene Elemente, etc. und Referenz-> " nuget-Pakete verwalten und installieren jeden Verweis wieder.
Habe ich viele Projekte in meiner Lösung und Durchführung dieses für alle ist verständlicherweise sehr zeitaufwendig.
Ich würde gerne wissen, ob es einen einfachen Weg gibt?
Wie es scheint, es sollte eine Möglichkeit für Nuget und VS zu schön spielen, so dass ich leicht bewegen Sie den repository-Ordner in einen anderen Pfad.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Weg, das zu beheben die Referenz-Pfade ist die Verwendung der Paket-Manager-Konsole.
Aus der Paket-Manager-Konsole können Sie führen Sie den folgenden Befehl zum installieren Sie NuGet-Pakete, die Korrektur der Tipp-Pfade für die Verweise.
Dies wird installieren Sie alle NuGet-Pakete in die Lösung. Ich bin vorausgesetzt, Sie haben den code unter Versionskontrolle, so dass Sie sehen können, welche änderungen vorgenommen wurden, um die Projekte, wenn Sie brauchen, um Sie rückgängig machen, nachdem dieser erneut installieren.
Gibt es weitere Dokumentation auf Neuinstallation von NuGet-Paketen, die auf der NuGet-Dokumentationswebsite.
Andere Möglichkeit dieses Problem zu beheben ist zu tun, suchen-und ersetzen Sie in der .csproj-Dateien zu beheben, der Hinweis Weg.
Ich begegnet diesem problem, wenn ich zog die eigentlichen Ordner um in meiner Lösung. Ich in der Regel tun, ein suchen/ersetzen-mit VS Code suchen
>..\packages\
und ersetzen Sie es mit>..\..\packages\
. Dieses mal habe ich Folgendes gemacht:Update-Package -Reinstall
.csproj
Dateien manuell, die nicht bauen, in meinem Beispiel:Bemerken, dass es 2 Bedingung Anweisungen in der
<Import>
dass relative Pfade zu..\..\packages
.Hoffentlich werden diese Schritte helfen, jemand anderes.
Paket.config wird verwendet für eine Datei irgendwo aus dem Ordner, hilft es am besten, um nicht hochladen-Paket ungewöhnlich, wenn Sie etwas hinzufügen in Ihr Projekt über Nuget.
Versuchen, kopieren Sie die Paket-Ordner (neuer Pfad, den Sie festgelegt ist) oder einfach nur das Projekt schließen, öffnen Sie es erneut und klicken Sie auf Wiederherstellen, nachdem Sie zum Verwalten von Projekt-Referenz.
Nach dem Versuch, alle Lösungen, die hier gepostet, die ich nicht entkommen konnte eine primäre Frage: Verweise auf nicht nuget Elemente, wie
System
undSystem.Core
blieb unwirksam (gelbes Dreieck, die neben Ihnen). Entfernen Sie, und fügen Sie diese nicht machen Sie wieder gültig. Weitere (wie wir alle wissen) Visual Studio ist schrecklich und Angabe von Gründen, warum ein Verweis ist ungültig.So, während Matt ' s Lösung funktioniert in der Tat verlagern Sie die
nuget
Paket-Ordner, die Lösung nicht in einem funktionsfähigen Zustand. Weitere, Aktualisierung Hinweis Pfade, die nicht helfen, weil diese zu dem nuget-Pakete. Ich kann nicht erklären, warum basic-Referenzen wieSystem
auch ungültig. Vielleicht jemand, der dieses liest ein Jahr ab jetzt können hinterlassen Sie eine Nachricht mit einer Erklärung.Was ich am Ende tun, ist, den Umbau meines gesamten Projekt ohne
nuget.config
- Datei (habe ich gelöscht). Dies bewirkt, dassnuget
zu verwenden Sie alle Standardwerte. Heruntergeladene Pakete gespeichert in\\<solution_folder>\packages\
. Nach der Lösung wurde die Arbeit wieder, ich habe wieder dienuget.config
- Datei, aber mit den folgenden entfernt:...und das entfernen dieser Abschnitt Ursachen nuget verlassen sich auf Standard-Verhalten, welches sich genau das heraus, was ich wollte (Installation von Paketen \ - Pakete, etc).
Wenn jemand anderes über die zur Durchführung dieser mühevollen Arbeit, fand ich dieses SO der Lösung hilfreich für das verschieben von Ordnern und Dateien aus der alten Lösung an das neue.
Dies gelang mir zu meiner eigenen Lösung, ohne zu wissen, wie (und endete mit einer packages-Ordner im *.sln-Ebene und eine weitere auf Der Ebene darunter) - aber ich bin mir ziemlich sicher jetzt, dass dies alles hat zu tun mit der Migration von der Verwendung eines packages config-Datei, um die neue Methode der Verwendung von package-Referenzen. Dies kann auftreten, wenn Sie eine neuere version von visual studio (das ist das, was möglicherweise Ihre Vertragspartner haben) oder über eine Taste/commend in NuGet, oder per Rechtsklick über ein Kontextmenü.
Eines der Dinge, die passiert, ist die Schaffung einer "globalen" packages-Ordner (die bei .sln-Ebene), die gemeint ist, speichern Sie Ihre Speicherplatz, da es bedeutet, können Sie mehrere Lösungen mit dem gleichen Paket ohne große doppelte package-Ordner wiederholt in jeder Lösung.
Ich fand dies heraus, als ich war Die Zusammenlegung der text ist zwei csproj-Dateien und benötigt Google: import project Unterschied zu Paket Verweis
Sehen https://docs.microsoft.com/en-us/nuget/reference/migrate-packages-config-to-package-reference