NuGet.Server

NuGet.Server ist ein Paket der .NET Foundation, das eine ASP.NET-Anwendung erstellt, die auf jedem Server, auf dem IIS ausgeführt wird, ein Paketfeed hosten kann. Einfach ausgedrückt stellt NuGet.Server auf dem Server einen Ordner über HTTP(S) (insbesondere OData) zur Verfügung. NuGet.Server ist einfach einzurichten und eignet sich am besten für einfache Szenarios.

  1. Erstellen Sie in Visual Studio eine leere ASP.NET-Webanwendung, und fügen Sie zu dieser das Paket „NuGet.Server“ hinzu.
  2. Konfigurieren Sie in der Anwendung den Ordner Packages, und fügen Sie diesem Pakete hinzu.
  3. Stellen Sie die Anwendung auf einem geeigneten Server bereit.

In den folgenden Abschnitten wird dieser Prozess im Detail beschrieben. Dabei wird C# verwendet.

Wenn Sie weitere Fragen zu „NuGet.Server“ haben, erstellen Sie ein GitHub-Problem auf https://github.com/nuget/NuGetGallery/issues.

Erstellen und Bereitstellen einer ASP.NET-Webanwendung mit NuGet.Server

  1. Wählen Sie in Visual Studio dateineue > Project aus, suchen Sie >nach "ASP.NET Webanwendung (.NET Framework)", wählen Sie die entsprechende Vorlage für C# aus.

    Select the .NET Framework web project template

  2. Legen Sie Framework auf „.NET Framework 4.6“ fest.

    Setting the target framework for a new project

  3. Geben Sie der Anwendung einen geeigneten Namen (nicht „NuGet.Server“), klicken Sie auf „OK“, wählen Sie im nächsten Dialogfeld die Vorlage Empty (Leer) aus, und klicken Sie auf OK.

    Select the empty web project

  4. Klicken Sie mit der rechten Maustaste auf das Projekt, und klicken Sie auf NuGet-Pakete verwalten.

  5. Klicken Sie auf der Benutzeroberfläche des Paket-Managers auf die Registerkarte Durchsuchen, und suchen Sie die neueste Version des Pakets „NuGet.Server“ und installieren diese, wenn Sie .NET Framework 4.6 als Ziel verwenden möchten. (Sie können NuGet.Server auch über die Paket-Manager-Konsole mithilfe von Install-Package NuGet.Server installieren.) Akzeptieren Sie die Lizenzbedingungen, falls Sie dazu aufgefordert werden.

    Installing the NuGet.Server package

  6. Das Installieren von NuGet.Server konvertiert die leere Webanwendung in eine Paketquelle. Eine Reihe anderer Pakete wird installiert, ein Ordner namens Packages wird in der Anwendung erstellt und web.config wird geändert, sodass zusätzliche Einstellungen übernommen werden können (weitere Informationen dazu finden Sie in den Kommentaren in der jeweiligen Datei).

    Wichtig

    Prüfen Sie web.config sorgfältig, nachdem das Paket „NuGet.Server“ die Änderungen an der Datei abgeschlossen hat. Möglicherweise überschreibt „NuGet.Server“ vorhandene Elemente nicht und erstellt stattdessen Duplikate. Diese Duplikate lösen einen internen Serverfehler aus, wenn Sie zu einem späteren Zeitpunkt versuchen, das Projekt auszuführen. Wenn Ihr web.config zum Beispiel <compilation debug="true" targetFramework="4.5.2" /> enthält, bevor „NuGet.Server“ installiert wird, überschreibt das Paket das Element nicht, stattdessen fügt es ein zweites <compilation debug="true" targetFramework="4.6" /> ein. Löschen Sie in diesem Fall das Element mit der älteren Version des Frameworks.

  7. Führen Sie die Website lokal in Visual Studio aus (mit Debugstart > ohne Debugging oder STRG+F5). Auf der Startseite finden Sie wie unten gezeigt die Paketfeed-URLs. Wenn Fehler angezeigt werden, überprüfen Sie die Datei web.config sorgfältig auf doppelte Elemente, wie weiter oben erwähnt.

    Default home page for an application with NuGet.Server

  8. Beim erstmaligen Ausführen der Anwendung strukturiert NuGet.Server den Ordner Packages so um, dass dieser jeweils einen Ordner für jedes Paket enthält. Dies entspricht dem Layout für die lokale Speicherung, das in NuGet 3.3 zum Verbessern der Leistung eingeführt wurde. Wenn Sie weitere Pakete hinzufügen möchten, sollten Sie diese Struktur ebenfalls verwenden.

  9. Stellen Sie die Anwendung je nach Bedarf auf anderen internen oder externen Websites bereit, nachdem Sie ihre lokale Bereitstellung getestet haben.

  10. Sobald eine Anwendung auf http://<domain> bereitgestellt wurde, lautet die URL, die Sie als Paketquelle verwenden, http://<domain>/nuget.

Externes Hinzufügen von Paketen zum Feed

Sobald eine NuGet.Server-Website ausgeführt wird, können Sie mit dem Befehl nuget push weitere Pakete hinzufügen, vorausgesetzt Sie haben in web.config einen API-Schlüsselwert festgelegt.

Nach der Installation des Pakets „NuGet.Server“ enthält web.config einen leeren appSetting/apiKey-Wert:

<appSettings>
    <add key="apiKey" value="" />
</appSettings>

Wenn apiKey weggelassen oder leer gelassen wird, ist das Übertragen von Paketen in den Feed deaktiviert.

Wenn Sie diese Funktion aktivieren möchten, müssen Sie für apiKey einen Wert festlegen (im Idealfall ein sicheres Kennwort) sowie einen Schlüssel namens appSettings/requireApiKey mit dem Wert true hinzufügen:

<appSettings>
    <!-- Sets whether an API Key is required to push/delete packages -->
    <add key="requireApiKey" value="true" />

    <!-- Set a shared password (for all users) to push/delete packages -->
    <add key="apiKey" value="" />
</appSettings>

Wenn Ihr Server bereits geschützt ist oder Sie keinen API-Schlüssel benötigen (z.B. bei Verwendung eines privaten Servers in einem lokalen Teamnetzwerk), können Sie für requireApiKeyfalse festlegen. Alle Benutzer mit Zugriff auf den Server können dann Pakete übertragen.

Ab NuGet.Server 3.0.0 lautet die URL für das Pushen von Paketen http://<domain>/nuget. Vor Version 3.0.0 lautete die Push-URL http://<domain>/api/v2/package.

Ab NuGet 3.2.1 ist standardmäßig die ältere URL /api/v2/package mit der Option enableLegacyPushRoute: true in der Startkonfigurationsdatei (standardmäßigNuGetODataConfig.cs) zusätzlich zu /nuget aktiviert. Beachten Sie, dass diese Funktion nicht angewendet werden kann, wenn in demselben Projekt mehrere Feeds gehostet werden.

Entfernen von Paketen aus dem Feed

Bei „NuGet.Server“ löscht der Befehl nuget delete ein Paket aus dem Repository, vorausgesetzt Sie schließen den API-Schlüssel in den Kommentar ein.

Wenn Sie das Verhalten so ändern möchten, dass das Paket stattdessen aus der Liste entfernt wird (somit bleibt es für die Paketwiederherstellung verfügbar), legen Sie den Schlüssel enableDelisting in web.config auf TRUE fest.

Konfigurieren des Ordners „Pakete“

Mit NuGet.Server 1.5 und höher können Sie den Paketordner mithilfe des Werts von appSettings/packagesPath in web.config anpassen:

<appSettings>
    <!-- Set the value here to specify your custom packages folder. -->
    <add key="packagesPath" value="C:\MyPackages" />
</appSettings>

packagesPath kann ein absoluter oder virtueller Pfad sein.

Wenn packagesPath weggelassen wird oder dafür nichts eingegeben wird, wird der Ordner „Pakete“ als Standard verwendet (~/Packages).

Verfügbarmachen von Paketen beim Veröffentlichen der Web-App

Wenn Sie im Feed Pakete zur Verfügung stellen möchten, nachdem Sie die Anwendung auf einem Server veröffentlicht haben, fügen Sie in Visual Studio die Dateien mit der Erweiterung .nupkg zum Ordner Packages hinzu, legen Sie dann für deren BuildvorgangInhalt fest und für In Ausgabeverzeichnis kopierenImmer kopieren:

Copying packages to the Packages folder in the project

Versionshinweise

Die Versionshinweise für NuGet.Server sind auf der GitHub-Seite „Releases“ verfügbar. Diese enthalten auch Informationen zu Fehlerbehebungen und neuen Features, die hinzugefügt wurden.

NuGet.Server-Unterstützung

Wenn Sie zusätzliche Hilfe bei der Verwendung von „NuGet.Server“ benötigen, erstellen Sie ein GitHub-Problem auf https://github.com/nuget/NuGetGallery/issues.