Wissen von A bis Z

NuGet

Das digitale Schweizer Taschenmesser, das alle benötigten Bauteile für Ihr .NET-Projekt automatisch zusammensucht.

NuGet ist der offizielle Paketmanager der .NET-Plattform und damit zentraler Verteilungsmechanismus für Bibliotheken, Tools und Templates im .NET-Ökosystem. Pakete werden im NuGet-Format (.nupkg, ein ZIP mit Metadaten und Assemblies) ausgeliefert und über öffentliche oder private Feeds bezogen — der bekannteste ist der zentrale Server nuget.org.

Eingesetzt wird NuGet in nahezu jedem .NET-Projekt: zur Auflösung von Abhängigkeiten in MSBuild-Projekten, zur Verteilung interner Bibliotheken über private Feeds (etwa Azure Artifacts, GitHub Packages, JFrog Artifactory) und zur Auslieferung von Tooling wie .NET-Tools (dotnet tool install). Restore-Operationen werden vom dotnet-CLI, von Visual Studio und Rider transparent durchgeführt; semantische Versionierung (SemVer) sowie Metadaten zu Lizenz, Quelle und Repository sind fester Bestandteil der Paketdefinition.

Der Einsatzzweck von NuGet ist die Lösung des klassischen Abhängigkeitsproblems: Statt DLLs manuell in ein /lib-Verzeichnis zu kopieren oder über die ‚Bin-Folder-Strategie' aktuell zu halten, deklariert ein Projekt seine Abhängigkeiten in der .csproj-Datei und überlässt Auflösung, Versionsentscheidung (Floating Versions, Lock-Files) und Caching dem Paketmanager. Damit werden reproduzierbare Builds, transitive Abhängigkeiten und der Umgang mit Diamond-Dependency-Konflikten technisch beherrschbar.

Historisch entstand NuGet 2010 zunächst unter dem Namen NuPack als Open-Source-Projekt im Outercurve-Umfeld; um Verwechslungen mit dem CodePlex-Projekt NUPACK zu vermeiden, wurde es schon kurz vor dem ersten offiziellen Release in NuGet umbenannt. Mit Visual Studio 2010 und später dem .NET-CLI wurde es zur Standardlösung; das Format wurde mehrfach überarbeitet, am tiefgreifendsten mit dem Übergang von packages.config zu PackageReference im SDK-Style-Projektsystem von .NET Core.

Eingeführt wurde NuGet von Microsoft mit maßgeblicher Beteiligung der Open-Source-Community, darunter Phil Haack und David Ebbo. Der Umbenennungswechsel von NuPack zu NuGet wenige Tage vor Release ist innerhalb der .NET-Community legendär — er führte dazu, dass Vortragsfolien, Blogposts und Buchkapitel aus dieser Zeit teils noch beide Namen tragen und in Frühausgaben mancher Bücher korrigiert wurden.

Zurück