Vor NuGet war es allgemein anerkannt, dass alle in einem Projekt verwendeten externen DLLs eingecheckt wurden. Normalerweise in einem Libs
oder 3rdParty
Verzeichnis.
Soll ich bei der Arbeit mit NuGet das packages
Verzeichnis einchecken oder kann MSBuild die benötigten Pakete automatisch aus dem Nuget-Feed herunterladen?
version-control
msbuild
nuget
Scott Weinstein
quelle
quelle
Antworten:
Nein
Da diese Frage gestellt wurde, gibt es jetzt einen einfachen Workflow, um NuGet zu verwenden, ohne Pakete zur Quellcodeverwaltung zu verpflichten
Über Ihre Paketmanager-Konsole müssen Sie die 'NuGetPowerTools' installieren :
Damit Ihre Projekte die Paketwiederherstellung unterstützen können, müssen Sie einen anderen Befehl ausführen:
Jetzt können Sie Ihre Codebasis ohne den Paketordner festschreiben. Der vorherige Befehl hat Ihre Projektdateien so geändert, dass fehlende Pakete automatisch heruntergeladen und hinzugefügt werden.
Quelle
Verwenden von NuGet, ohne Pakete für die Quellcodeverwaltung festzulegen
quelle
Enable NuGet Package Restore
. Siehe die Dokumente .Ja. Betrachten Sie das Verzeichnis "packages" als äquivalent zu Ihrem Verzeichnis "libs", das Sie in Ihrer Frage erwähnt haben. Dies ist der Ansatz, den ich persönlich bei meinen OSS-Projekten verfolge.
Wir untersuchen Funktionen, mit denen MSBuild die erforderlichen Pakete automatisch herunterladen kann, die jedoch nicht implementiert wurden (ab NuGet 1.1).
Ich denke, einige Leute haben solche Funktionen möglicherweise bereits selbst implementiert, aber wir planen, diese Funktion hoffentlich in NuGet 1.2 oder 1.3 zu integrieren.
quelle
Trotz aller Antworten hier ist es immer noch eine schreckliche Lösung, nicht alle Ihre Abhängigkeiten unter "irgendeiner Art" Versionskontrolle zu haben.
Für GIT würde dies GIT-LFS bedeuten.
Die jüngste Episode mit NPM zeigt, warum: Wenn das Internet-Repository, von dem Sie abhängen, Pausen hat, nicht verfügbar ist usw., dann sind Sie nicht fertig?
Sie sind nicht mehr in der Lage, Ihre Sachen zu bauen - und daher nicht in der Lage zu liefern.
quelle
npm
brach, weil es keine Pakete auflistete, sondern sie tatsächlich löschte. NuGet macht das nicht; Wenn Sie zu irgendeinem Zeitpunkt nicht auf NuGet zugreifen können, stimmt etwas schrecklich nicht. Ich denke nicht, dass das Speichern eines Craptonne von Abhängigkeiten in Git eine gute Lösung ist: Sperren Sie einfach Ihre Abhängigkeiten auf eine bestimmte Version und haben Sie einen Spiegel zwischen Ihnen und im Internet, wenn dies für Sie wichtig ist.Seit ich die Frage gestellt habe, habe ich den folgenden Ansatz gewählt, damit ich nicht im Verzeichnis toplovel Packages einchecken muss .
In einer Datei build.msbuild auf oberster Ebene:
In jeder project.csproj-Datei
quelle
Mir ist klar, dass die Realität anders war, als diese Frage ursprünglich gestellt und beantwortet wurde, aber zum Glück hat sich die Antwort ein wenig geändert. Mit NuGet können jetzt Abhängigkeiten mithilfe eines Pre-Build-Ereignisses über MSBuild heruntergeladen werden. Sie müssen den Paketordner nicht in Ihrem Code-Repository ablegen, alle Abhängigkeiten werden beim Erstellen heruntergeladen und / oder aktualisiert. Es mag eine Problemumgehung sein, aber es sieht anständig genug aus. Weitere Informationen finden Sie im folgenden Blog-Beitrag: http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html
quelle
Ab dem 20.09.13 gibt es etwas namens "Nuget Restore". Sie müssen den Paketordner nicht einchecken, wenn Sie dies möchten. (Besonders wenn Sie DVCS verwenden)
Überprüfen Sie Folgendes: Verwenden von NuGet Ohne Festschreiben von Paketen zur Quellcodeverwaltung http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
quelle
Dieser Beitrag ist sehr veraltet. Die Antwort lautet immer noch NEIN, aber die Lösung hat sich geändert. Ab NuGet 2.7+ können Sie die automatische Paketwiederherstellung aktivieren, ohne die Datei NuGet.exe in Ihre Quelle aufzunehmen (dies ist gelinde gesagt unerwünscht). Wenn Sie ein modernes DVCS verwenden, können Sie den Paketordner ignorieren. Wenn Sie spezielle Anpassungen benötigen, können Sie eine Datei nuget.config im Lösungsstamm erstellen.
http://docs.nuget.org/docs/reference/package-restore
Mit dem neuen csproj-Format können Sie auch die zusätzlichen Dateien nuget.config vermeiden, da diese jetzt integriert sind. Bitte lesen Sie diesen Beitrag, der das besser erklärt:
Sollte der Versionskontrolle ein .nuget-Ordner hinzugefügt werden?
quelle