2016-03-25 8 views
3

Ich fand OctoPack unglaublich einfach beim Erstellen von .nupkg Paketdateien, aber ich würde gerne die .nuspec Datei enthalten (ist derzeit in einem anderen Ordner wie obj/octopackage oder etwas) und alle DLLs sollten so in einem lib/net452 folder platziert werden, dass die allgemeine Struktur erscheint als solche:Zielpfad der Octopack nuget Paketdatei angeben

enter image description here

Zur Zeit alles, was im lib/net452 Ordner sein sollte einfach in der Wurzel gelegt wird, entlang mit _rels und package, und Wie erwähnt, fehlt die .nuspec Datei.

Entweder die Dokumentation ist ein wenig spärlich oder ich habe komplett vermisst, wie dies in meinem Debugging mentaler Dunst zu tun. Wer weiß, wie man zu OctoPack spezifiziert, wo speziell die kompilierte Ausgabe innerhalb der .nupkg Akte gelegt wird?

Antwort

3

Um Ihr NuGet-Paket zu erstellen, sollten Sie nuget.exe verwenden, nicht OctoPack. Ich werde in einer Minute erklären, warum. Die Datei .nuspec dient als "Blueprint" für Ihr NuGet-Paket (.nupkg). Die kurze Antwort besteht also darin, einfach den Speicherort in Ihrer .nuspec-Datei anzugeben, indem Sie das target-Attribut des Elements <files> verwenden. Details finden Sie auf den NuGet site gefunden werden, aber es wäre in etwa so aussehen:

<files> 
    <file src="bin\$configuration$\*.dll" target="lib\net452\" /> 
</files> 

Es gibt eine Reihe von Möglichkeiten nuget.exe in einem Post-Build-Schritt zu nennen; Viele werden auch auf der NuGet-Website erklärt.

OctoPack ist nicht dazu gedacht, Pakete für nuget.org zu erstellen; Es wurde speziell entwickelt, um Pakete für Octopus Deploy zu erstellen. Es schafft Pakete eine von zwei Möglichkeiten:

  1. Wenn es eine web.config-Datei vorhanden ist, OctoPack geht davon aus, dass das Projekt ein Web-Projekt ist, und packt die Ausgabe entsprechend. Es verwendet die Projektdatei, um zu bestimmen, welche Elemente als Inhalt markiert sind und welche nicht (obwohl immer web.config-Transformationsdateien verwendet werden).
  2. Andernfalls nimmt OctoPack an, dass das Projekt eine ausführbare Datei oder eine Komponente ist, und packt einfach alles, was es im Ausgabeordner findet (normalerweise \Debug\bin oder \Release\bin). Dies ist das Verhalten, das Sie sehen.

Seit OctoPack nuget.exe unter der Haube verwendet, eine .nuspec Datei beiden obigen Fällen außer Kraft setzen. Während Sie also OctoPack verwenden können, um Ihr NuGet-Paket zu erstellen, ist es geeigneter, nuget.exe zu verwenden.

Verwandte Themen