Sie haben eine Anwendung oder möglicherweise sogar eine Reihe wichtiger Skripte erstellt und müssen sie verpacken und bereitstellen. Schauen Sie nicht weiter als NuGet und die verschiedenen NuGet-Paketmanager, die Ihnen zur Verfügung stehen.
In diesem Artikel erfahren Sie, wie Sie verschiedene NuGet-Paketmanager zum ersten Mal einrichten können, damit Sie sie sofort verwenden können.
Verwandt: Einrichten des NuGet-Servers unter Windows (Vollständige Anleitung)
Einrichten eines NuGet.Server-Wrapper
Obwohl die Einrichtung eines NuGet.Servers von Grund auf nicht allzu kompliziert ist, kann es für jemanden, der neu bei Visual Studio und IIS ist, eine Weile dauern. Eine Möglichkeit, den Einrichtungs- und Aktualisierungsprozess zu beschleunigen, ist die Verwendung eines Wrappers. Einer der beliebtesten Wrapper, namens nuget-server, wurde von svenkle geschrieben und kann auf ihrer Github-Seite gefunden werden.
Einer der Hauptunterschiede bei der Verwendung dieses Wrappers anstelle der manuellen Installation des Webservers besteht darin, dass er IIS Express verwendet. Weitere Informationen zu den Unterschieden finden Sie auf der Website von Microsoft.
Es gibt zwei wichtige Unterschiede zwischen der Einrichtung eines Standard-NuGet.Servers und der Verwendung dieses Wrappers:
- Sie müssen einen Windows-Dienst erstellen, um den Webserver zu starten
- Sie können den IIS-Manager nicht für die Konfiguration verwenden
Der Hauptnachteil bei der Verwendung eines Wrappers zur Installation von NuGet.Server besteht darin, dass Sie die Version nicht leicht aktualisieren können, bis der Wrapper aktualisiert wurde.
Voraussetzungen
Wenn Sie lernen möchten, wie Sie diesen NuGet.Server-Wrapper einrichten, stellen Sie bitte sicher, dass Sie Folgendes haben:
- Installer für Svenkle’s NuGet.Server-Wrapper
- Windows Server – Jede derzeit unterstützte Version von Windows Server funktioniert, aber alle Screenshots wurden auf Windows Server 2019 Standard aufgenommen.
Installation des Webserverdienstes
Der erste Schritt besteht darin, einen neuen Windows-Dienst zu erstellen. Da dieser NuGet.Server-Wrapper nicht IIS verwendet, können Sie sich nicht darauf stützen.
Mit der heruntergeladenen Datei NuGetServer.zip von der Veröffentlichungsseite entpacken Sie die Datei in das von Ihnen gewählte Verzeichnis auf dem Webserver. Sobald sie entpackt ist, erstellen Sie den Windows-Dienst, der die Webseite automatisch beim Starten des Servers startet. Unten finden Sie einen PowerShell-Befehl, um dies für Sie zu erledigen.
Anpassen des Webservers
Jetzt, da Sie den NuGet.Server aus dem Wrapper installiert haben und der Dienst erstellt und gestartet wurde, ist es an der Zeit, die web.config-Datei anzupassen. Sie können die gleichen Änderungen vornehmen, die Sie mit der manuellen Bereitstellung in der web.config-Datei vorgenommen haben, wenn Sie möchten.
Die web.config-Datei befindet sich im Ordner <UnzipPath>\Host\Website. Der wesentliche Unterschied bei dieser Bereitstellung besteht darin, dass der Port 8080 anstelle des Standard-HTTP-Ports 80 verwendet wird. Das bedeutet, dass Sie überall dort, wo Sie die Web-URL verwendet haben, :8080 anhängen müssen, z. B. wenn Sie zur Webseite gehen möchten, wäre es http://localhost:8080/nuget.
Fertig. Das war viel einfacher als die Verwendung von Visual Studio!
Einrichten von BaGet auf IIS
Während Sie bisher nur Standardversionen von NuGet.Server betrachtet haben, gibt es viele andere verfügbare Versionen. Ein beliebter NuGet-Paketmanager ist ein Open-Source-Projekt namens BaGet.
Sehen wir uns an, was erforderlich ist, um BaGet auf einem Windows Server mit IIS zu installieren und auszuführen.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie einige Voraussetzungen erfüllen.
- BaGet.zip – Zum Zeitpunkt des Verfassens dieses Textes ist das Projekt noch in der Vorabversion und ich verwende v0.1.77
- .NET Core Runtime & Hosting Bundle – Dies muss heruntergeladen und auf dem Webserver verfügbar sein.
- Windows Server – Jede derzeit unterstützte Version von Windows Server funktioniert, aber alle Screenshots wurden auf Windows Server 2019 Standard aufgenommen
Installation der Webserver-Voraussetzungen
Obwohl die folgenden Schritte auf Linux mit .NET Core oder in einem Docker-Image ausgeführt werden können, werden diese Anweisungen verwendet, um BaGet auf einem Windows-Server zu installieren. Auf diese Weise können Sie IIS nutzen, um Ihren Server zu starten und zu stoppen.
IIS installieren
Da BaGet auf .NET Core läuft, sind nicht so viele Anforderungen wie für den grundlegenden NuGet.Server erforderlich, für den Sie zuvor IIS installiert haben. Sie benötigen nur einen Standard-IIS-Webserver und den IIS-Manager. Um diese zu installieren, öffnen Sie eine PowerShell-Sitzung auf Ihrem Webserver und führen Sie folgenden Befehl aus:
.NET Core installieren
Installieren Sie anschließend das .NET Core Bundle auf dem Webserver. Führen Sie dazu die zuvor heruntergeladene exe-Datei aus. Sie können alle Optionen für diese Installation auf Standard belassen.
Das .NET Core Bundle muss nach der Installation von IIS installiert werden. Wenn dies nicht in der richtigen Reihenfolge geschieht, müssen Sie den Installer für das .NET Core Bundle erneut ausführen und „Reparieren“ auswählen, um die fehlenden Anforderungen für eine Webanwendung hinzuzufügen.
Jetzt, da die Komponenten des Webservers bereit sind, entpacken Sie die zuvor heruntergeladene Datei BaGet.zip und platzieren Sie sie im Ordner C:\inetpub\wwwroot auf Ihrem Webserver.
Konfiguration der Webserveranwendung
Ähnlich wie bei NuGet.Server müssen Sie einige IIS-Komponenten einrichten, um den NuGet-Paketmanager BaGet zum Laufen zu bringen.
Erstellen des BaGet IIS Application Pool
Öffnen Sie den IIS-Manager auf dem Webserver und gehen Sie zu den Anwendungspools. Erstellen Sie einen neuen Anwendungspool für BaGet, da dieser keinen .NET-Verwaltungscode verwendet. Sie können ihn nach Belieben benennen. So sollte es aussehen.

Erstellen der BaGet-Website
Nachdem der Anwendungspool erstellt wurde, erstellen Sie die Website. Da BaGet einen nicht standardmäßigen HTTP-Port und einen nicht standardmäßigen App-Pool verwendet, ist es am einfachsten, eine separate Website von der Standardwebsite zu erstellen. Klicken Sie dazu mit der rechten Maustaste auf den Ordner Websites im IIS-Manager und wählen Sie Website hinzufügen.
Hier sind die Einstellungen, die Sie für BaGet konfigurieren müssen.

Sobald die Website konfiguriert ist, sollte sie automatisch starten. Sie können sie sich ansehen, indem Sie von Ihrem Server aus zu http://localhost:5000/ navigieren.

Sie werden feststellen, dass auf der BaGet-Webseite im Vergleich zur Standard-NuGet.Server-Webseite eine Benutzeroberfläche vorhanden ist. In BaGet können Sie problemlos nach hochgeladenen Paketen suchen und es bietet auch Befehle zum Hochladen auf verschiedene Arten an, anstatt die NuGet-Befehlszeilenoptionen zu verwenden.
Anpassen des BaGet-Webservers
Beachten Sie, dass Sie Ihren NuGet.Server-Server mit der Datei web.config anpassen konnten. Der NuGet Package Manager BaGet verwendet jedoch nicht die Datei web.config. Stattdessen haben sich die Entwickler aufgrund der Möglichkeit, BaGet auch unter Linux zu verwenden, für ein plattformübergreifendes Format mit einer JSON-Datei namens appsettings.json entschieden. Diese befindet sich im Ordner C:\inetpub\wwwroot\BaGet.
Beachten Sie, dass aufgrund der plattformübergreifenden Funktionalität von BaGet mit .NET Core alle Pfade Schrägstriche verwenden.
Zum Beispiel, wenn Sie Ihren Paketpfad auf Ihrem Server auf C:\Packages haben möchten, müssten Sie den unten gezeigten Inhalt in der Datei appsettings.json haben.
BaGet API-Schlüssel
Um Ihren NuGet-Server vor unberechtigten Benutzern beim Veröffentlichen oder Löschen von Paketen zu schützen, sollten Sie weiterhin einen API-Schlüssel festlegen. Die Einstellung für den API-Schlüssel befindet sich ebenfalls in der Datei appsettings.json, damit Sie ihn dort festlegen können.
Da ich PowerShell zum Verwalten meiner NuGet-Pakete verwende, kann ich erneut ein PSRepository registrieren. Für BaGet navigieren Sie zur Webseite, die Sie erstellt haben. Die Webseite gibt Ihnen den Befehl, den Sie in Ihrer PowerShell-Sitzung ausführen müssen. Zum Beispiel:
Verständnis für BaGet-Forks (LiGet)
Obwohl BaGet viele Optionen bietet, wurden andere Forks von BaGet erstellt, die sich auf andere Bereiche von NuGet spezialisiert haben. Einer der beliebtesten Forks ist LiGet. LiGet unterscheidet sich darin, dass es sich auf eine Linux-orientierte Perspektive spezialisiert hat.
LiGet ist eine Abspaltung des ursprünglichen BaGet-Projekts, ein NuGet-Paketmanager. Es gab einige Gründe, warum die Entwickler dies beschlossen haben, aber hauptsächlich wurde dies getan, um sich auf bestimmte Funktionen von NuGet, einschließlich der Unterstützung für den V3-Feed, zu konzentrieren. Die Unterstützung für den V3-Feed hat keinen Einfluss auf den Verwendungszweck mit PowerShell. Wenn Sie jedoch einen NuGet-Server für andere Anwendungsfälle hosten möchten, werden Sie die zusätzliche Funktionalität sicherlich zu schätzen wissen.
Der gehashte API-Schlüssel von LiGet
Ein wesentlicher Unterschied zwischen LiGet und BaGet besteht darin, dass LiGet anstelle eines Klartext-API-Schlüssels einen gehashten API-Schlüssel verwendet. Mit einem Klartext-Schlüssel könnte jemand mit Zugriff auf die web.config-Datei von NuGet.Server oder die appsettings.json-Datei von BaGet auf den Server veröffentlichen. Dies ist bei LiGet nicht möglich.
Um LiGet zum Laufen zu bringen, müssen Sie einen gehashten API-Schlüssel erstellen und ihn in die appsettings.json-Datei im C:\inetpub\wwwroot\LiGet-Ordner einfügen.
Um den Hash zu erstellen, können Sie PowerShell oder eine andere Methode verwenden, mit der Sie vertraut sind. Im Folgenden finden Sie ein Beispiel, wie Sie auf Ihrem Arbeitsplatzrechner einen Hash erstellen würden.
Sie können auch einen Online-Hash-Generator verwenden, um den Hash zu erstellen.
Der Nachteil dieses Ansatzes besteht darin, dass Sie, wenn Sie den API-Schlüssel vergessen, einen neuen Hash erstellen und ersetzen müssen, da der Hash nicht umkehrbar ist.
Einrichten von ProGet auf IIS
Alle bisher behandelten Optionen sind kostenlos und haben nach der Einrichtung nicht viele bewegliche Teile. Dies ist zwar gut, um NuGet auszuprobieren, aber wenn Sie mit anderen Tools integrieren möchten oder wenn Sie für ein System am Arbeitsplatz Herstellerunterstützung benötigen, ist eine bessere Option möglicherweise der NuGet-Paketmanager ProGet.
Voraussetzungen
Um ProGet einzurichten, benötigen Sie einige gängige Voraussetzungen, mit denen Sie wahrscheinlich bereits vertraut sind, jedoch mit der zusätzlichen Möglichkeit einer optionalen SQL-Datenbank.
- Windows Server – Jede derzeit unterstützte Version von Windows Server funktioniert, aber alle Screenshots wurden auf Windows Server 2019 Standard aufgenommen
- ProGet Installer – Die von mir verwendete Version von ProGet ist 5.2.9.
- SQL-Instanz – Dies ist optional, da ProGet die Option bietet, SQL Express aus dem Installationsprogramm zu installieren, dies erfordert jedoch eine Internetverbindung von Ihrem Server, um den anfänglichen Download durchzuführen
Installation von ProGet
Führen Sie den ProGet Installer auf Ihrem Webserver aus. Da Sie IIS einrichten, wählen Sie die Option IIS Webserver während der Installation von ProGet. Wenn Sie IIS noch nicht installiert haben, wird dies während der Installation von ProGet durchgeführt.
Der Rest der Optionen kann standardmäßig belassen werden, es sei denn, Sie möchten die ProGet-Datenbank auf einem separaten SQL-Server hosten. In diesem Fall müssen Sie die zu verwendende SQL-Instanz angeben.
Wenn Sie die Option SQL Server als Install Inedo instance belassen, wird SQL Express Server für Sie installiert.

Nach Abschluss der Installation starten Sie die Website, wenn Sie dazu aufgefordert werden, und es sollte eine Webseite angezeigt werden, die wie der untenstehende Screenshot aussieht.

Konfigurieren eines PSRepository auf ProGet
An diesem Punkt ist ProGet installiert. Es ist ziemlich einfach. Da wir PowerShell verwenden, um mit NuGet-Paketen zu arbeiten, müssen wir ein PSRepository einrichten, wie wir es zuvor getan haben.
Um ProGet für ein PSRepository einzurichten, navigieren Sie zum Feeds-Tab und erstellen Sie einen neuen Feed. Sie können dem Feed einen beliebigen Namen geben. Wählen Sie dann Third-party package format und PowerShell wie unten gezeigt aus.

Nachdem Sie den Feed erstellt haben, gehen Sie zurück zum Feeds-Tab, wählen Sie Ihren neuen Feed aus und es wird die URL angezeigt, die zum Veröffentlichen verwendet wird. Dies ist das, was Sie in PowerShell auf einem Gerät ausführen müssten, um auf dieses PSRepository zu veröffentlichen oder daraus herunterzuladen.
Unten wird das gezeigt, was mit dem obigen Beispiel angezeigt wurde:
Hinzufügen eines API-Schlüssels
Wie bei den anderen Optionen müssen Sie einen API-Schlüssel generieren. Klicken Sie dazu auf das Zahnrad-Symbol oben rechts und wählen Sie dann API Keys in der linken Symbolleiste aus. Hier können Sie vorhandene API-Schlüssel sehen und neue erstellen. Sie werden sofort einen Hauptunterschied zwischen dem Open-Source- und dem Enterprise-ProGet feststellen. Mit ProGet können Sie viele API-Schlüssel haben.

Auf dem Bildschirm API-Schlüssel klicken Sie auf API-Schlüssel erstellen. Aktivieren Sie hier das Kontrollkästchen für Feed-API und klicken Sie auf API-Schlüssel speichern.

Sobald der API-Schlüssel erstellt wurde, gelangen Sie zurück zur Seite API-Schlüssel. Von hier aus können Sie den angezeigten API-Schlüssel verwenden, um Pakete in Ihren Feed zu veröffentlichen.
Paketsuche mit ProGet
ProGet enthält auch eine Webseite, auf der Sie alle NuGet-Pakete im Feed suchen, deren Download-Zähler anzeigen, den Namen der PowerShell-Module, in die ein Paket hochgeladen wurde, und andere ähnliche Paketstatistiken auf der Seite Pakete wie unten gezeigt.

Alternativ können Sie zur Seite Feeds gehen und einen Feed auswählen, um nur die Pakete für diesen Feed anzuzeigen. Dort können Sie in einzelne Pakete eintauchen, um Statistiken und andere Details zu den Paketen anzuzeigen, wie unten gezeigt.

Aktualisierung von ProGet
Ein schöner Teil der Verwendung eines Produkts, das für ein Unternehmen positioniert ist, besteht darin, dass einige der zeitaufwändigeren administrativen Aufgaben viel schneller erledigt werden können. Ein Beispiel dafür ist die Aktualisierung von ProGet.
Um ProGet auf die neueste Version zu aktualisieren, öffnen Sie einfach den Inedo Installer auf Ihrem Webserver. Dieser wurde installiert, als Sie ProGet zum ersten Mal installiert haben. Klicken Sie auf die Schaltfläche Aktualisierung, wie unten gezeigt, und der Installer erledigt den Rest für Sie.

Vergleich der NuGet-Paketmanager
In diesem Artikel haben Sie viel über verschiedene NuGet-Tools gelernt. Wenn Sie immer noch auf der Suche nach dem richtigen sind, erhalten Sie in diesem Abschnitt einen Einblick in die Unterschiede zwischen ihnen.
BaGet vs. LiGet
Da LiGet ein Fork von BaGet ist, haben sie viele Ähnlichkeiten, einschließlich des größten Teils des Einrichtungsprozesses. Tatsächlich können Sie genau dasselbe Einrichtungsverfahren wie bei BaGet befolgen.
Nach der Installation teilen LiGet und BaGet einige Funktionen, unterscheiden sich jedoch in anderen Bereichen.
Feature | BaGet | LiGet |
---|---|---|
Web Port | 5000 | 9011 |
Source URL | /v3/index.json | /api/v3/index.json |
NuGet Search API | v2 | v3 |
API Key | Plain Text | SHA256 hash |
Web Interface | Can see list of packages and commands to upload | No web interface |
Obwohl die meisten dieser Unterschiede die Verwendung mit PowerShell nicht beeinflussen, ändert sich die Einrichtung geringfügig aufgrund der Verwendung eines gehashten API-Schlüssels.
Sowohl BaGet als auch LiGet sind auf .NET Core aufgebaut, was sie plattformübergreifend und auf Linux-Betriebssystemen sowie auf Windows nutzbar macht. Beide haben auch Docker-Images zur Verfügung, die, wenn Sie bereits einen Containerdienst verwenden, die Einrichtung wesentlich schneller und portabler machen können.
Mit den wenigen Unterschieden zwischen LiGet und BaGet ist entweder eine großartige Option für einen Open-Source-, containerfreundlichen NuGet-Server. Beide Optionen ermöglichen es Ihnen, Ihre ersten Schritte in einem NuGet-Server unter Windows zu machen und sich in Zukunft ohne allzu großen Mehraufwand auf Linux oder ein Docker-Image zu bewegen.
BaGet vs ProGet
Wenn Sie sich lieber nicht selbst in gewissem Maße einbringen möchten und den einfacheren Weg gehen möchten, gibt es immer noch ProGet. Es gibt jedoch Nachteile. ProGet ist nicht Open Source und keineswegs kostenlos. Aber es ist einfacher einzurichten und damit zu arbeiten.
Es gibt einige wesentliche Unterschiede zwischen ProGet und BaGet.
Feature | ProGet | BaGet |
---|---|---|
Cost | ProGet Free: Free, ProGet Basic: $1995/yr, ProGet Enterprise: $9995+/year | Free |
Platform | Windows | Windows, Linux, Docker |
Database | SQL | Internal |
Support | ProGet Free: Email and Slack support, ProGet Basic and Enterprise: Defined SLAs with Email, Slack and Phone support | Community based through GitHub issues |
Inedo hat auch eine Aufschlüsselung aller Funktionsunterschiede zwischen den Versionen von ProGet.
Zusammenfassung
In diesem Artikel haben Sie eine Menge über verschiedene NuGet-Tools und -Technologien gelernt. Wenn Sie unsicher waren, welchen NuGet-Server Sie verwenden sollten, sollten Sie nun über viel mehr Wissen verfügen, um diese Entscheidung zu treffen.
Sie haben gelernt, wie Sie jedes NuGet-Tool einrichten, um mit Windows zu arbeiten, und wir haben viele der Funktionen von jedem behandelt.