Warum bringt NuGet Pakete auf "Lösungsebene"?

8

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.

    
chrismay 19.07.2011, 14:08
quelle

2 Antworten

4

Hier sollten Sie lesen, das erklärt, wie Sie nuget verwenden, ohne Pakete zu Ihrer Quellcodeverwaltung zu committen, und als Nebeneffekt die Punkte 1 und 3 Ihrer Frage zu lösen: Ссылка

    
mathieu 19.07.2011 14:19
quelle
2

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.

    
Antony Scott 19.07.2011 14:23
quelle

Tags und Links