Wenn Sie einem Projekt ein nugget-Paket hinzufügen, werden die Assemblys auf der Lösungsebene in einen Ordner / packages verschoben.
Ich weiß, dass es Möglichkeiten gibt, dies zu ändern, aber ich frage mich, warum dies der Standardort ist, da er aus diesen Gründen sehr wenig hilfreich erscheint:
1) Wenn Sie ein Projekt haben, das Teil mehrerer Lösungen ist, ist der Ordner / packages nicht unbedingt dort, wo Sie das Projekt erwartet.
2) Es wird erwartet, dass Sie es manuell in die Quellcodeverwaltung für andere Teammitglieder einchecken, was viel weniger praktisch ist, als wenn es Teil des Projekts wäre, das es benötigt.
3) Wenn Sie das Projekt an einen anderen Ort im Dateisystem oder auf einen anderen Computer verschieben, der nicht über die vollständige Codebasis verfügt, wird der Ordner / packages nicht dort gefunden, wo er erwartet wird.
Es scheint, dass all diese Probleme gelöst werden, wenn NuGet nur einen / packages-Ordner innerhalb des Projekts verwendet, nicht die Lösung. Und das scheint ein viel logischerer Ort zu sein, um Pakete zu platzieren, auf die das Projekt ohnehin angewiesen ist.
Also ... ich gehe davon aus, dass es gute Gründe gibt, dies auf der Lösungsebene zu tun, und ich hoffe, dass mich jemand aufklären kann.
Ich denke, es ist Speicherplatz zu sparen. Wenn Sie eine große Lösung mit 50 Projekten hätten und Sie ein Paket in jedem dieser Pakete verwendet hätten, hätten Sie 50 Kopien dieses Pakets, Binärdateien und alle anderen. Es ist in dieser Hinsicht viel effizienter, sie auf der Ebene der Lösung zu halten.
Im Hinblick auf die Quellcodeverwaltung sollten Sie Ihren tatsächlichen Paketordner nicht dort einfügen. Fügen Sie einfach die Datei packages.config hinzu und tun Sie entweder, was David Ebbo in dem von Mathieu erwähnten Blogpost vorschlägt, oder erstellen Sie einen einfachen Batch Datei zum Herunterladen aller Pakete basierend auf den packages.config-Dateien, die es finden kann.
Es ist nicht viel Aufwand, einen eigenen Unternehmensnuget-Feed zu erstellen, damit Sie Ihre privaten Pakete dort aufbewahren können.
Tags und Links nuget nuget-package