Installation
Wie Sie die Nextended-Pakete einbinden, welche Zielframeworks unterstützt werden und worauf Sie bei den plattformgebundenen Paketen achten müssen.
Voraussetzungen
| SDK | .NET 8, 9 oder 10 |
| Sprachversion | latest (die Pakete nutzen aktuelle C#-Sprachfeatures) |
| Nullable | aktiviert; die Bibliotheken sind durchgängig nullable-annotiert |
Nextended.Core unterstützt zusätzlich netstandard2.0 und netstandard2.1, ist also auch aus älteren Zielframeworks nutzbar.
Ein Paket hinzufügen
dotnet add package Nextended.CoreOder in der .csproj:
<ItemGroup>
<PackageReference Include="Nextended.Core" Version="10.1.22" />
</ItemGroup>Alle Pakete werden gemeinsam versioniert und veröffentlicht. Mischen Sie keine Hauptversionen zwischen Nextended-Paketen innerhalb einer Anwendung.
Welches Paket wofür
Kernbibliotheken
dotnet add package Nextended.Core
Basisbibliothek — Extension Methods, eigene Typen (Money, Date, BaseId, SuperType), Class Mapping, Deep Clone, Verschlüsselung, Hashing und die Attribute für die Codegenerierung. — Dokumentationdotnet add package Nextended.Cache
Ausdrucksbasiertes Caching — automatische Cache-Keys aus Methodenausdrücken, CacheProvider mit bedingter Invalidierung, thread-sicheres AddOrGetExisting. — Dokumentation
Datenzugriff
dotnet add package Nextended.EF
Entity-Framework-Core-Erweiterungen — Graph-Laden (LoadGraphAsync, IncludeAll, MultiInclude), deklarative Include-Definitionen, Paging, dynamisches Sortieren und Bulk-Operationen. — Dokumentation
ASP.NET Core & Web
dotnet add package Nextended.Web
ASP.NET-Core-Werkzeuge — OData ohne Konfiguration (AddODataAuto), kombinierbare OData-Applier für IQueryable, typisierte Controller-URLs, Streaming-Download-Helfer und ein Background-Executor, der einen aufgezeichneten Request erneut abspielen kann. — Dokumentationdotnet add package Nextended.ResponseFilters
Providerunabhängige Fluent-Pipeline, die Response-DTOs vor der Serialisierung schwärzt, maskiert, rundet, kürzt, hasht, ausdünnt und umstrukturiert — pro Request, pro Benutzer, pro Berechtigung. — Dokumentationdotnet add package Nextended.ResponseFilters.AspNetCore
ASP.NET-Core-Adapter für Nextended.ResponseFilters — registriert die Pipeline als globalen IAsyncResultFilter und spielt strukturelle Änderungen auf den serialisierten JSON-Baum zurück. — Dokumentation
UI-Bibliotheken
dotnet add package Nextended.Blazor
Blazor-Helfer — IBrowserFile-Erweiterungen (Bytes, Data-URLs, Downloads), ein hierarchisches Modell zum Navigieren in hochgeladenen ZIP-/TAR-/RAR-Archiven, MIME-Typ-Erkennung und Reflection über Komponentenparameter. — Dokumentationdotnet add package Nextended.UI
WPF- und Windows-Desktop-Helfer — globaler Input-Binding-Manager mit Hold- und Sequenz-Erkennung, DirectInput- und XInput-Gamepad-Reader, Steuerelemente zum Erfassen von Tastenkombinationen, Converter, Behaviours, Markup-Extensions und zur Laufzeit definierte PropertyGrid-Typen. — Dokumentation
Codegenerierung & Werkzeuge
dotnet add package Nextended.Imaging
Bildverarbeitung — seitenverhältnistreues Skalieren, Zuschneiden, Farbersetzung, helligkeitsbasierte Vordergrundfarbwahl, Thumbnail-Erzeugung, Byte-/Data-URL-Konvertierung und MIME-Erkennung über Magic Bytes. — Dokumentationdotnet add package Nextended.CodeGen
Roslyn-Source-Generator — DTOs und Interfaces aus Ihren Entities, stark typisierte Klassen aus JSON/XML, Lookup-Tabellen aus Excel und Dokumentation aus Quelldateien. — Dokumentation
.NET Aspire Hosting
dotnet add package Nextended.Aspire
Konditionale AppHost-Builder-Erweiterungen — WithReferenceIf / WaitForIf / WithExplicitStartIf, typisierte Umgebungsvariablen aus Konfigurationsobjekten, HTTPS-Dev-Cert-Anbindung, Docker-Guards, GitHub-Source-Ressourcen und npm-App-Erkennung. — Dokumentationdotnet add package Nextended.Aspire.Hosting.Supabase
Der komplette Supabase-Stack — Postgres, Auth (GoTrue), REST, Realtime, Storage, Studio, Kong und Edge Functions — als eine kombinierbare Aspire-Ressource. — Dokumentationdotnet add package Nextended.Aspire.Hosting.N8n
Die Workflow-Automatisierung n8n als Aspire-Ressource — mit Postgres-Persistenz, Workflow-Import und typisiertem Client zum Auslösen von Workflows aus .NET. — Dokumentationdotnet add package Nextended.Aspire.Hosting.Grafana
Grafana, Prometheus, Loki, Tempo, Promtail, cAdvisor, postgres_exporter und den OpenTelemetry Collector als kombinierbare Ressourcen mit automatisch bereitgestellten Datenquellen. — Dokumentationdotnet add package Nextended.Aspire.Hosting.WebDataStudio
WebDataStudio — ein Browser-Datenbankstudio für PostgreSQL, MySQL, SQL Server, SQLite, Oracle, DuckDB, ClickHouse, MongoDB und Redis — verdrahtet mit den Datenbanken Ihres Stacks, mit Konten und Rollen, optionalem SQL-Assistenten und einem MCP-Endpunkt für KI-Agenten. — Dokumentationdotnet add package Nextended.Aspire.Hosting.AspireUI
AspireUI — der visuelle AppHost-Builder — als Ressource im eigenen Aspire-Stack, mit optional vorangelegtem Admin-Benutzer und einem Starter-Stack aus Ihren Projektpfaden. — Dokumentationdotnet add package Nextended.Aspire.Hosting.LocalAI
Selbst gehostete, OpenAI-kompatible multimodale KI — Bildgenerierung, Text-to-Speech, Speech-to-Text und Video — mit Galerie-Modellverwaltung, GPU-Unterstützung und Open WebUI. — Dokumentationdotnet add package Nextended.Aspire.Hosting.Php
PHP-Endpunkte im Aspire-Stack betreiben — ein docroot-Ordner oder ein einzelnes Router-Skript über PHPs eingebauten Webserver, mit php.ini-Einstellungen als Fluent-Optionen. — Dokumentation
Plattformhinweise
Nextended.Imagingbaut aufSystem.Drawing.Commonauf. Microsoft unterstützt das ab .NET 7 nur noch unter Windows; unter Linux und macOS werfen dieSystem.Drawing-TypenPlatformNotSupportedException. Für plattformübergreifende Bildverarbeitung greifen Sie zu ImageSharp oder SkiaSharp.
Nextended.UIhat Windows-Zielframeworks (net8.0-windowsund höher) und referenziert WPF. Es lässt sich außerhalb von Windows nicht kompilieren.
Alle übrigen Pakete sind plattformübergreifend.
Besonderheit: Nextended.CodeGen
Nextended.CodeGen ist ein Roslyn-Source-Generator und läuft nur zur Buildzeit. Es braucht zwei Einträge in der .csproj:
<ItemGroup>
<!-- die Attribute -->
<PackageReference Include="Nextended.Core" Version="10.1.22"
PrivateAssets="all" GeneratePathProperty="true" />
<!-- der Generator -->
<PackageReference Include="Nextended.CodeGen" Version="10.1.22" />
</ItemGroup>
<ItemGroup>
<!-- die Konfiguration; darf leer sein ({}), muss aber vorhanden sein -->
<AdditionalFiles Include="CodeGen.config.json" />
</ItemGroup>Ohne den AdditionalFiles-Eintrag erhält der Generator seine Konfiguration nicht und erzeugt nichts. Details unter Nextended.CodeGen.
Registrierung im DI-Container
Die meisten Pakete sind reine Erweiterungsbibliotheken und brauchen keine Registrierung. Zwei Pakete schon:
// Response-Filter (ASP.NET Core)
builder.Services.AddNextendedResponseFilters(
assemblies: [typeof(MeinFilter).Assembly]);
// OData ohne eigenes EDM-Modell
builder.Services.AddODataAuto();
builder.Services.AddControllers().AddODataAuto(ProvidedAsEdm.GetEdmModel());Prüfen, ob alles läuft
using Nextended.Core.Extensions;
Console.WriteLine("hello world".ToPascalCase()); // HelloWorldKompiliert und läuft das, ist die Einbindung korrekt.
Von nExt migrieren
Die Sammlung erschien früher als nExt.*. Die Namespaces heißen jetzt Nextended.*, die API ist ansonsten quellkompatibel. Siehe den Migrationsleitfaden (englisch). Das Altpaket nExt.Core wird nicht mehr gepflegt.
Pakete selbst bauen
publish.ps1 im Repository-Wurzelverzeichnis baut alle Pakete mit einer Versionsnummer. Ohne -Push ist es ein vollständiger Probelauf und legt die .nupkg-Dateien nur unter .\artifacts ab:
pwsh publish.ps1 -Version 10.1.23Das Skript löst dabei ein Reihenfolgeproblem: Nextended.CodeGen referenziert Nextended.Core als NuGet-Paket (festgelegt über <UsedCorePackageVersion>), alle anderen Projekte per ProjectReference. Früher musste man Core erst veröffentlichen, auf die Indizierung durch nuget.org warten und dann CodeGen nachziehen. Das Skript packt Core stattdessen lokal und stellt es CodeGen über eine temporäre lokale Quelle bereit — eine Version, ein Durchlauf, kein Warten.