Skip to content

Installation

🇬🇧 This page in English

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
Sprachversionlatest (die Pakete nutzen aktuelle C#-Sprachfeatures)
Nullableaktiviert; 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

bash
dotnet add package Nextended.Core

Oder in der .csproj:

xml
<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. — Dokumentation
  • dotnet 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. — Dokumentation
  • dotnet 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. — Dokumentation
  • dotnet 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. — Dokumentation
  • dotnet 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. — Dokumentation
  • dotnet 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. — Dokumentation
  • dotnet 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. — Dokumentation
  • dotnet 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. — Dokumentation
  • dotnet 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. — Dokumentation
  • dotnet 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. — Dokumentation
  • dotnet 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. — Dokumentation
  • dotnet 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. — Dokumentation
  • dotnet 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.Imaging baut auf System.Drawing.Common auf. Microsoft unterstützt das ab .NET 7 nur noch unter Windows; unter Linux und macOS werfen die System.Drawing-Typen PlatformNotSupportedException. Für plattformübergreifende Bildverarbeitung greifen Sie zu ImageSharp oder SkiaSharp.

Nextended.UI hat Windows-Zielframeworks (net8.0-windows und 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:

xml
<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:

csharp
// 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

csharp
using Nextended.Core.Extensions;

Console.WriteLine("hello world".ToPascalCase());   // HelloWorld

Kompiliert 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:

bash
pwsh publish.ps1 -Version 10.1.23

Das 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.