Freigeben über


Dieser Artikel wurde maschinell übersetzt.

NuGet

Erstellen einer NuGet-Galerie

**Clark Sell
**Mark Nichols

Dies ist der dritte und letzte Artikel in unserer Serie über NuGet, ein neues Paket Verwaltung Ökosystem für Entwickler. NuGet, ein Projekt der Stiftung Outercurve gibt.NET-Entwickler eine Art und Weise verbrauchen, verfassen und Veröffentlichen von Pakete. So weit, die Serie zeigte Sie Projekt Bibliotheken mit NuGet verwalten (msdn.microsoft.com/magazine/hh547106) und wie man eine NuGet Autor geworden (msdn.microsoft.com/magazine/hh708753). In diesem Artikel nehmen wir einen Blick auf Ihre eigene Galerie NuGet hosting und erstellen einen Buildprozess um Ihre Pakete zu verwalten.

Warum veranstalten die Galerie?

NuGet.org existiert bereits als öffentliche Repository für NuGet Pakete, so dass Sie den Punkt Hosting eine Galerie in Frage stellen könnte. Das ist verständlich, aber was nutzt die Ökosystem-Infrastruktur innerhalb der Mauern Ihrer eigenen Dev Umgebung? Warum nicht richten Sie Ihren eigenen privaten Galerien nicht nur Ihr Produkt Entwicklung Ökosystem zu erleichtern, aber, noch besser, es direkt an Ihre Build- und Bereitstellung Prozesse zu binden? Darüber hinaus ist alles, was Sie bei NuGet.org sehen Sie kostenlos zur Verfügung.

In diesem Artikel untersuchen wir die erforderlichen Schritte zum Erstellen und Verwenden eigener NuGet Galerie. Wie wir schon gesagt habe, wird Einbeziehung der NuGet in Ihrem Entwicklungszyklus ist nicht kompliziert und lohnt. Sobald Sie es getan haben, wird Ihr Paket Verbrauch, Erstellung und Verteilung Probleme nicht mehr als eine ferne Erinnerung.

Vor dem Tauchen, lassen Sie uns einen Anwendungsfall, den meisten Entwickler gefunden haben: Versionsverwaltung. Ihr Produkt, je nach Größe und Komplexität, ist sehr wahrscheinlich das Ergebnis von vielen Teams, unterschiedliche Version Zeitpläne und eine Vielzahl von Assemblys. Das endgültige Produkt ist natürlich schön für Ihre Kunden gebündelt, aber ihre Reise zum Abschluss enthalten hunderte wenn nicht Tausende von Builds, massenhaft viele verschiedene Versionen des Produkts Vermögenswerte.

Im letzten Jahrzehnt, Entwicklungsverfahren — einschließlich automatisierter Build- und Bereitstellung Systeme — geholfen die Schmerzen zu reduzieren, aber sie fiel immer kurz an die Verteilung und Auswahl. Paket-Management-Systeme bieten die Lösung für dieses.

Denken Sie an Ihre eigene Entwicklung Ökosystem, in welche verschiedene Teams arbeiten unabhängig voneinander auf die Versionen veröffentlichen, die sie für den Verzehr zu wählen. Jedes Team mit eigenen Build und Release-Plan, will Kontrolle und eine einfache Möglichkeit, ihre Produkte zu veröffentlichen. Mit einem Paket-Management-System jedes Team ruft zu entscheiden, was das Produkt ist und wie es installiert werden soll, und Kunden bekommen zu entscheiden, wann sie es zu sich nehmen sollten.

Zu einem gewissen Grad ist dies wie open-Source-Gemeinschaften mit bewährte Methoden, die leicht skaliert werden arbeiten, sehr ähnlich. Zwar der Pakete finden Sie auf NuGet.org ziemlich "große geädert", folgen Sie die gleichen Praktiken, für Ihre eigenen Anwendungen erstellen. Eine gute, konkrete Beispiel für die Art der Software, die dies für nützlich wäre möglicherweise ein Hilfsprogrammbibliothek Ihres Unternehmens erstellt und verwaltet für seine öffentlichen Produkte.

Vielleicht schränkt Ihr Unternehmen nur die Bibliotheken und die Versionen, die die Entwickler verwenden können. Dies ist ein weiterer großer Grund für Sie, Ihre eigene proprietäre Galerie mit der genehmigten Pakete und Paketversionen zu hosten.

Schnell und einfach

Die einfachste Möglichkeit, Ihre eigene Galerie NuGet host ist eine Dateifreigabe verfügbar zu machen. Das klingt ein bisschen rudimentäre, aber benötigen Sie etwas schneller und einfacher, diese Methode funktioniert sehr gut. Die Aktie kann strukturiert werden, wie Sie für richtig halten, Sie platzieren Ihre Pakete — das heißt, Ihre *. Nupkg Dateien — überall auf der Freigabe. Sie können auf die Freigabe als Paketquelle verweisen.

Addieren sie mit der Paketquelle erstellt die Entwicklungsumgebung. Sie haben so viele Paketquellen wie gewünscht und leicht zwischen den einzelnen bewegen. Um Ihre Paketquellen in Visual Studio bearbeiten, navigieren Sie zu Tools | Optionen | Paket-Manager | Paket Quellen (siehe Abbildung 1). Beachten Sie, dass dieses Schreibens, Version 1.5 aktuell war. Sie sollten leichte Unterschiede über NuGet Versionen erwarten.

Adding a Package Source in Visual Studio
Abbildung 1 Hinzufügen einer Paketquelle in Visual Studio

Hier können Sie hinzufügen, entfernen und Ändern der Standard-Paket-Quelle. Wenn Sie es vorziehen, können Sie das gleiche in WebMatrix, eine kostenlose Entwicklungsumgebung tun. Einfach klicken Sie auf das Symbol NuGet Galerie im Hauptmenü und wählen Sie Quelle hinzufügen, wie im Abbildung 2.

Adding a Package Source in WebMatrix
Abbildung 2 hinzufügen eine Paketquelle in WebMatrix

Wie Sie sehen können, sind beide Zahlen zwei Paketquellen. Sie können nur eine oder alle zu einem bestimmten Zeitpunkt zu verwenden.

Einführung NuGet Galerie

Während die Datei System Paket-Quelle sehr einfach einzurichten und zu benutzen ist, bricht es ziemlich schnell wenn Sie heraus beginnen Skalierung. Glücklicherweise NuGet.orgwas gebaut, genau in diesem Sinne, eine offene Plattform für Menschen zu nutzen, zu erweitern und bauen auf für ihre eigenen Bedürfnisse. Finden Sie das NuGet Galerie-Projekt bei github.com/NuGet/NuGetGallery. Die Galerie NuGet ist eine ASP.NET MVC 3 Projekt baut auf Messers Schneide, imparte, SQL Server und Windows Azure.

Der beste Weg zu verstehen, die Features und Funktionen der Galerie NuGet zu Ihrer Entwicklung Ökosystem zu bieten hat ist einfach NuGet.org erkunden.

Bevor Sie erstellen und ein Pakets veröffentlichen können, müssen Sie ein registrierter Benutzer sein. Sobald Sie sich angemeldet haben, haben Sie volle Rechte hochladen und Ihr Profil bearbeiten und Verwalten Ihrer Pakete. Sie können auch generieren die einzigartige API-Schlüssel, mit dem Sie veröffentlichen Pakete, um die Galerie zu automatisieren (siehe Abbildung 3). Weitere Informationen zum Veröffentlichen eines Pakets finden Sie im vorangegangenen Artikel dieser Reihe, "Immer eine NuGet Autor."

A Registered User Account in NuGet
Abbildung 3-registrierte Benutzer-Account in NuGet

Wenn Sie ein Paket in der NuGet Galerie hochladen, es automatisch erhält seinen eigenen Platz in der Galerie, wie in Abbildung 4.

A Package Uploaded to the NuGet Gallery
Abbildung 4-Paket in der NuGet Galerie hochgeladen

Dies ist, wo Sie alle wichtigen Informationen zu einem Paket anzeigen können. Für jedes Paket die NuGet Galerie verfolgt die Version Downloads, insgesamt downloads, Termine, Lizenzen und so weiter. Natürlich, ein Paket auf der NuGet.orgsite ergibt wahrscheinlich erheblich größere herunterladen Zahlen seines Ökosystems, aber diese Statistiken sind entscheidend für jedes Paketautor, unabhängig von der Projektgröße.

Der Paket-Feed ist eindeutig das wichtigste Merkmal in der gesamten Stack. Es ist ein imparte füttern Sie auf http://YourGallery/api/v2 finden. Dies ist die gleiche URL, die Sie als Ihre Paketquelle verwenden. Ohne dieses Futter die Leistung der NuGet ist verloren.

Erste Schritte

Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes installiert haben:

Zum Zeitpunkt des Schreibens dieses Artikels gibt es keine Installationsprogramme für die Galerie und das Projekt wird sehr aktiv entwickelt. Das bedeutet, dass es immer am besten auf der Projekthomepage für die neuesten Informationen zu gehen. Sie müssen die Source herunterladen und erstellen Sie sie, das ist einfach.

Um die Quelle zu erhalten, können Sie entweder nur eine komprimierte Kopie der aktuellen master Branch herunterladen oder Klonen die Quelle mit Git, etwa so:

$ git clone https://github.com/NuGet/NuGetGallery.git

Wenn Sie dies getan haben, müssen Sie den gesamten Quellcode lokal.An der Wurzel finden Sie ein Windows PowerShell-Skript namens Build-Solution.ps1.Führen Sie dieses Skript auf Ihrem Rechner einrichten und erstellen die Quelle.

Wenn Sie den Quellcode ausführen, werden Sie feststellen, es sieht aus und fühlt sich genau wie NuGet.org.Vielleicht denken Sie vom zwicken UI, vielleicht ändern die Homepage.Das ist verständlich, aber seien Sie vorsichtig, besonders wenn Ihre Absichten sind, mit dem Meister Quelle synchron zu bleiben.

Build-Prozess trifft NuGet Galerie

Der nächste logische Schritt ist Ihr NuGet Galerie mit Ihrer vorhandenen Buildprozesse integrieren.Wenn Sie nicht über einen Build-Prozess und Sie sind auf der Suche nach ein wenig "erste Schritte" Anleitung mit Team Foundation Server (TFS) Buildprozesse, überprüfen heraus die Microsoft Visual Studio ALM Rangers Build Customization Guide bei rabcg.codeplex.com.

Alles klar: Sie haben eine Bibliothek, die Sie möchten auf eine Galerie zur Verfügung stellen der Ehrentribüne NuGet, eine eigene Galerie oder sogar eine lokale Dateifreigabe sein könnte.Unabhängig davon, müssen Sie bestimmte Aufgaben zum Erstellen des Pakets NuGet, und sie sind in der Regel die gleichen Aufgaben egal wo befindet sich die Galerie.

Im Verlauf der Entwicklung Ihres Produktes gehe Sie wiederholt durch den Prozess der Kodierung, kompilieren, Verpackung, Druck und Veröffentlichung.Sie werden auch, wir hoffen, ein paar gesunde Dosen von Tests umfassen. Das Ergebnis, dass Tests Sie in der Galerie veröffentlichen machen könnte, wenn Sie Probleme finden abweichen (siehe Abbildung 5).

The NuGet Development ProcessAbbildung 5 den NuGet Entwicklungsprozess

Verbraucher arbeiten Software zufrieden zu halten ist eine gute Sache, und Sie haben eine einfachere Zeit dabei mit einen verwalteten Prozess.Denken Sie daran, wenn der verwaltete Prozess nicht vollständig automatisiert werden kann; Es ist kein Ersatz für menschliche Überprüfung.Gehen Sie nicht davon aus, dass Sie veröffentlichen können, nur weil Ihre Software die automatisierten Tests übergibt.Sie können leicht eine Paket, die ist nicht bereit zu veröffentlichen und Ihre Verbraucher wütend.Darüber hinaus wird nicht sie gerne wenn Sie ständig veröffentlichen und sie nicht mit den ständig wechselnden Versionen mithalten können.Stellen Sie eine bewusste Entscheidung zu veröffentlichen.

Verwenden Sie den Build-Prozess zu bauen, Paket und schieben Ihr NuGet Bibliothek, eine Galerie, wo Sie endgültig Tests durchführen und dieser menschliche Prüfung.Auf diese Weise können Sie kontinuierliche Integration oder eines geplanten Builds automatisch das Paket und machen es für Sie zum Testen bereit.Wie könnten Sie das tun?Hier ist ein Beispiel für die Verwendung von TFS und die Workflow-basierten automatisierten Build-Funktion.

NuGet.exe ist eine eigenständige, parametergesteuert Konsolenanwendung, aber es kann leicht von einem anderen Prozess, z. B. TFS Team Build aufgerufen werden.TeamBuild ausgeführt wird, einen Workflow; TFS ausgedrückt ist dies eine Reihe von benutzerdefinierten Aktivitäten gesteuert durch ein Build-Vorlage und initiiert durch eine Builddefinition.Eine Paketlösung für die Automatisierung des NuGet Entwicklungsprozess ist das Projekt NuGetter nugetter.codeplex.com.Dieses Projekt bietet eine automatisierte Hülle um die NuGet.exe-Anwendung.Wir verwenden dieses Paket zu zeigen, was getan werden kann und Dinge zu denken, wie Sie automatisieren Ihre eigenen Pakete NuGet hinarbeiten.

Als Abbildung 6 zeigt, die Builddefinition in TFS ist wo Sie bieten alle notwendige Informationen, die Verpackung, push und veröffentlichen.Eine flexible und wiederholbaren Build-Bauprozess für NuGet erfordert mehrere Stücke von Daten und die Schalter, die Teile des Prozesses ein-/auszuschalten.Die Daten ist in Kategorien unterteilt, die betitelt werden, um zu geben Ihnen ein Gefühl von der Reihenfolge in der die Schritte ausgeführt werden.

Nugetter Build TemplateAbbildung 6 Nugetter Build Vorlage

Abschnitt PrePackaging ist kompliziert oder multiframework NuGet Verpackungen verwendet, die einige anfängliche Vorbereitung erfordert.NuGetter kann ein Windows PowerShell-Skript aufrufen, (wenn Sie wünschen), organisieren die Bibliotheks-Dateien, die Verpackung erleichtern.Dieser Schritt ist nicht erforderlich, so Sie den Flag-Parameter "Aufrufen PowerShell Script" verwenden können, um dem Prozess zu sagen, ob das Skript ausgeführt werden soll.

Sie können ein.Nuspec Datei direkt zu definieren, wie Ihr Paket erstellt wird, oder Sie können also indirekt durch eine CSPROJ-Datei tun.Es liegt an Ihnen; Verwenden Sie den Ansatz, der Ihren Bedürfnissen besser entspricht.

Wie Sie sehen können, sind alle Parameter für die Verpackung enthalten.Version, Basispfad (Quellordner für Verpackungen), API-Schlüssel und Galerie Standort (als Quellcode) als Teil der Builddefinition ausgestattet.Jedoch möglicherweise die Sicherheit dieser Informationen für Sie von großer Bedeutung.Beispielsweise ist die API-Key was Sie und nur Sie NuGet Pakete zur Galerie schieben können.Wenn dieser Schlüssel öffentlich wird, könnte jemand gefälschte Pakete in Ihrem Namen drücken.Aus diesem Grund kann NuGetter Sie können entweder die aktuelle API-Key oder einen Pfad zu einer Datei, die den Schlüssel enthält.Wenn Sie einen Dateipfad verwenden, der Build-Prozess liest die Datei, extrahiert den Schlüssel und verwendet es ohne Auflistung des Schlüssels im Protokoll und Sicherheit aufrechterhalten wird.Natürlich müssen die Build-Dienst-ID Lesezugriff auf die Datei dazu.

Ein weiteres potenzielles Problem für Sie ist die Version Ihres Pakets verwalten.In Abbildung 6, die Versionsnummer wird in der Builddefinition zur Verfügung gestellt.Aber wollen Sie wirklich diese Zahl in der Builddefinition ändern zu halten?Was passiert, wenn Sie mehrere Builds (continuous Integration [CI], täglich, andere geplant und verschiedene manuelle Builds) haben?NuGetter gibt Ihnen die Möglichkeit, die Version direkt einzugeben, oder, wie bei den API-Schlüssel, Sie bieten einem Dateipfad, dass mehrere erstellen, die Definitionen verwenden können.Sie werden alle verwenden die gleiche Versionsnummer und Sie können es an nur einem Ort verwalten.

Drücken Sie Ziel im Beispiel ist die Galerie NuGet, aber dies ist, wo Sie das Build-Ziel bereitstellen, auch wenn Sie Ihr Paket um eine interne Galerie oder einem lokalen Dateispeicher schieben sind.Dies ist ein weiterer Fall, wo der Build-Prozess benötigen, zu intervenieren.NuGet.exe erwartet eine URL als Ziel und wenn Sie zu einem lokalen Speicher schieben sind — die eine URL werden nicht — der Prozess muss das Zielformat zu interpretieren.In diesem Fall anstelle von NuGet.exe den Druck zu tun, haben Sie den Build-Prozess tun.

Aus Gründen der Vollständigkeit und Funktion Parität mit NuGet.exe stellt NuGetter für die automatisierte Veröffentlichung bereit.Nur im Kopf behalten Sie unsere früheren Vorsichtsmaßnahmen bevor Sie sich entscheiden, diese Funktion zu verwenden.

Übrigens müssen Sie nicht befürchten, dass Ihre Verbraucher keine Paket-Updates verpassen könnte.Die Gemeinschaft hat dies mit NuGetFeed bedeckt (github.com/NuGetFeed/NuGetFeed).NuGetFeed können, die Sie einen benutzerdefinierten RSS-feed erstellen, basierend auf die Pakete, die Sie auswählen.Die Verbraucher können einen benutzerdefinierten Feed hinzufügen, um ihre bevorzugten RSS-Reader und eventuelle Aktualisierungen informiert werden.

Eine weitere Option für das Erstellen eines Feeds NuGet ist MyGet bei MyGet.org.MyGet ideal für diejenigen, die wollen eine private NuGet feed Ihrer Liste der genehmigten Pakete möglicherweise aber nicht die Zeit, Geld und Mühe erstellen und Verwalten Ihrer eigenen Galerie-Infrastruktur verbringen möchten.MyGet ist eine gehostete Lösung, die Sie sehr schnell Galerien erstellen kann, die speziell für Ihre Bedürfnisse sind.Finden Sie auf der MyGet Website für ausführlichere Informationen.

Schließlich, wie wir bereits erwähnt, sind NuGet und NuGet Galerie open-Source-Projekte.Dies bedeutet Sie sind befugt, alles von Dokumentation zu Funktionen beitragen oder smash ein paar bugs auf den Weg.Auf der Homepage von Github detaillierte das Projekt-Team die genauen Schritte, die Sie ergreifen können, beitragen.

Nachbereitung

NuGet hat zweifellos verändert, wie wir über denken unsere.NET-Paket Verwaltung Ökosystem, sowohl öffentliche als auch private.NuGet Galerie und NuGetFeed sind wesentliche Bestandteile für den Abschluss dieses Ökosystem.Diese Werkzeuge in Ihren Tagesablauf zu bringen, eröffnet neue Möglichkeiten.Wie bereits erwähnt, NuGet Gallery ist in der aktiven Entwicklung, so stellen Sie sicher, besuchen github.com/NuGet/NuGetGallery für die aktuellsten Informationen.

Finden Sie alle Verbindungen verwendet, die in diesem Artikel und mehr bei on.csell.net/HostingNuGet. 

Clark Sell ist als senior Web Evangelist für Microsoft außerhalb von Chicago. He Podcasts bei DeveloperSmackdown.com, Blogs auf csell.net und finden Sie auf Twitter bei twitter.com/csell5.

Mark Nichols ist als senior Softwareberater für Microsoft außerhalb von Chicago. He Podcasts bei DeveloperSmackdown.com, Blogs Protokolle bei marnick.net und finden Sie auf Twitter bei twitter.com/mark_nic.

Dank der folgenden technischen Experten für die Überprüfung dieses Artikels: David Ebbo, Phil Haack und Brandon Satrom