Nachdem wir einfach und schnell Nuget-Pakete erzeugt haben, sollten wir diese auch bereitstellen. Dieser Artikel zeigt euch, wie wir diese Pakete veröffentlichen. Am Ende gibt es ein paar Tipps und Tricks.

Falls ihr noch kein Nuget-Paket zur Hand habt, schaut euch den vorherigen Beitrag an.

Mögliche Arten der Veröffentlichung

Die Pakete können auf zwei Arten bereitgestellt werden:

  • Dateiupload via Browser
  • Veröffentlichung via Kommandozeile (nuget.exe)

Nuget Konto erstellen

In beiden Fällen brauchen wir ein gültiges Konto. Dieses kann auf der Homepage[1] unter Sign in erstellt werden. Derzeit stellt Nuget die Anmeldung um. Es ist noch möglich, sich mit einem Nuget oder einem Microsoft-Konto anzumelden.
Langfristig soll nur noch das Microsoft-Konto verwendet werden.

Sobald ihr das Konto erstellt und euch angemeldet habt, geht es weiter.

Das Paket veröffentlichen

Dateiupload

Das manuelle Hochladen ist (auf den ersten Blick) die schnellste Methode, um das Paket zu veröffentlichen. Hierzu wählen wir im Menü „Upload Package“ aus und laden unser Paket hoch.

Weboberfläche von Nuget auf welcher wir das Paket hochladen
Manuell ein Paket auf Nuget hochladen

Anschließend zeigt die Webseite Informationen zu dem Paket an. Diese Informationen werden aus der nuspec-Datei extrahiert. Hier könnt ihr nochmal kontrollieren, ob alle Informationen korrekt sind. Falls nicht, passt die Informationen an und ladet die Datei erneut hoch.

Nachdem das Paket hochgeladen wurde, seht ihr das Paket in der Vorschau.

Meldung von Nuget nachdem ein Paket erfolgreich hochgeladen wurde.
Meldung von Nuget nachdem ein Paket erfolgreich hochgeladen wurde.

Die Veröffentlichung dauert immer ein paar Minuten. In der Zeit indiziert Nuget das Paket und prüft es auf Viren. Der Vorgang hat bei mir bisher nicht länger als 1-2 Minuten gedauert. Anschließend könnt ihr das Paket über die angezeigte Kommndozeile Install-Package Com.ClassLibrary2 -Version 1.0.0 zu eurem Projekt hinzufügen.

Kommandozeile

Um die Kommandozeile nutzen zu können müsst ihr einen API-Key erstellen. Der Menüpunkt in Nuget heißt „API Keys“.

Dem Schlüssel könnt ihr einen Namen geben, die Gültigkeitsdauer festlegen und die Berechtigungen steuern. Bei den Berechtigungen kann der Schlüssel auf bestimmte Paket (bzw. Paketnamen) eingeschränkt werden oder, dass nur neue Versionen hochgeladen aber keine neuen Pakete erstellt werden dürfen.

Formular zur Erstellung eines API-Schlüssels in Nuget
Formular zur Erstellung eines API-Schlüssels in Nuget

Anschließend kann der Schlüssel einmalig kopiert werden. Wenn der Schlüssel hier nicht gespeichert wird, kann der Wert nicht mehr ausgelesen werden.

Nachdem wir den Schlüssel haben nutzen wir die Kommandozeile: nuget push [PAKET] [API-KEY]

Beispiel: nuget push MyPackage.nupkg My1super2secret3api4key

Standardmäßig wird das Paket immer nach Nuget.org veröffentlicht. Mit dem Parameter -Source https://myPrivateNugetServer.com könnt ihr einen alternativen Nuget-Server zur Veröffentlichung angeben. Wenn alles gut lief, bekommt ihr HTTP 200 zurück und das Paket ist veröffentlicht. Im Fehlerfalle gibt euch die Kommandozeile eine detailierte Nachricht aus.

Zusammenfassung

Ein Paket kann recht einfach über die Weboberfläche oder Kommandozeile veröffentlich werden. Insbseondere die Kommandozeile hat das Potential zur Automatisierung (Stichwort: Buildserver).
Nach kurzer Zeit steht das Paket bereit und kann von allen Entwicklern

Tipps und Tricks

  • Nuget nutzt SemVer[2] zur Versionierung von Paketen. Damit sind auch Pre-Releases möglich
  • Wenn die Version der Assembly und des Packages identisch sind, entgeht ihr der Versionierungshölle
  • Der Api-Key kann mittels nuget setApiKey [KEY] für NuGet gespeichert werden. Dadurch erspart ihr euch Copy&Paste für zukünftige Uploads

Bildquelle: Pixabay.com

[1]: https://www.nuget.org/
[2]: https://semver.org/