Wie erstelle ich ein reines NuGet-Paket auf Lösungsebene?

9

Ich möchte ein NuGet-Paket erstellen und verteilen, das bei der Installation nur für die gesamte Lösung in den Ordner root packages installiert wird und auf das Paket in der Datei .NuGet\packages.config verweist.

Ich habe bereits einige Informationen über das NuGet-Paketformat in Bezug auf dieses Thema und gemäß den NuGet-FAQ gefunden Dies sollte möglich sein, wenn man diesen Richtlinien folgt:

  

Was ist der Unterschied zwischen einem Paket auf Projektebene und einem Paket auf Lösungsebene?

     

Ein Lösungspaket muss nur einmal in einer Lösung installiert werden   für alle Projekte in der Lösung verfügbar sein. Ein Projekt-Level   Paket muss separat in jedem Projekt installiert werden, wo Sie möchten   benutze es. Für Pakete auf Lösungsebene ändert NuGet nichts daran   ein Projekt, während es in einem Projekt-Level-Paket tut. Normalerweise a   Paket auf Lösungsebene installiert neue Befehle, von denen aus aufgerufen werden kann   im Fenster der Package Manager-Konsole.

Eine andere vorgeschlagene SO-Lösung gibt an, dass das oben Gesagte sein sollte habe auch gearbeitet.

Die Sache ist, ich kann es nicht zum Funktionieren bringen. Ich habe überprüft, dass mein Paket keine Lib- oder Inhaltsverzeichnisse enthält:

Ich habe alle Dateien verteilt, die im Paket tools enthalten sind, einschließlich des Skripts init.ps1, das bei der Installation ausgeführt wird.

Ich verwende Visual Studio 2015 und wenn ich das Paket installieren möchte:

  1. Ich muss zuerst ein Projekt auswählen, um es zu installieren. Ich hatte erwartet, dass ich dies nicht spezifizieren muss, da es für die gesamte Lösung gedacht ist. %Code%
  2. Das :/ -Skript läuft und führt die Befehle so aus, wie ich es möchte. %Code%
  3. Aber ein init.ps1 -Ordner wird in dem Projekt erstellt, das ich wählen musste, um die Installation zu erledigen. Ich hätte erwartet, dass der :) -Ordner im solution-root erstellt wird. %Code%
  4. Außerdem wird die packages -Datei im Projektordner erstellt und nicht in packages , wie ich nach dem Lesen der Dokumente, die ich hier gefunden habe, erwarten würde. %Code%

Irgendwelche Vorschläge, wie das funktioniert? Ist dies eine VS 2015 Einschränkung oder eine NuGet 3 Änderung (wie ich glaube, dass es in VS2015 enthalten war)?

    
Spiralis 26.10.2015, 17:46
quelle

1 Antwort

9

Das NuGet-Team veraltete Lösungspakete in NuGet 3.0.

Es gibt eine Diskussion , um sie für eine Zukunft auf eine Weise wiederherzustellen, die mit Visual Studio 2013 kompatibel ist Version von NuGet.

    
Matt Ward 26.10.2015, 19:07
quelle