NuExt stands for New Extensions: pragmatic .NET building blocks for real applications, focused on correctness, predictability, performance, and explicit design.
NuExt provides a lightweight, compile-time-assisted stack for building predictable desktop and hybrid .NET applications without a heavyweight application framework.
- Deterministic synchronous and asynchronous command execution.
- Explicit application, service, view, window, and document lifecycles.
- Compile-time generation of observable properties, commands, validation, and structured localization.
- Practical WPF infrastructure without convention-heavy or reflection-driven runtime machinery.
- Modular packages that can be adopted independently.
- Broad compatibility with modern .NET, .NET Standard, and .NET Framework where applicable.
NuExt favors generated or explicit code over runtime discovery, hidden subscriptions, and convention-based behavior.
For WPF and desktop MVVM applications, start with:
NuExt.Minimal.Mvvmfor the framework-neutral MVVM core.NuExt.Minimal.Mvvm.SourceGeneratorfor compile-time properties, commands, validation, and structured localization.NuExt.Minimal.Mvvm.Wpffor WPF application infrastructure.
Additional packages provide reusable WPF behaviors, presentation utilities, MahApps.Metro integration, foundational .NET utilities, and lightweight data-access infrastructure.
The graph below shows direct dependencies between NuExt modules:
NuExt.System
└─ NuExt.System.Data
└─ NuExt.System.Data.SQLite
NuExt.System ─────────────────────┐
NuExt.Minimal.Mvvm ───────────────┤
NuExt.Minimal.Behaviors.Wpf ──────┼─ NuExt.Minimal.Mvvm.Wpf
NuExt.Presentation.Wpf ───────────┘ │
└─ NuExt.Minimal.Mvvm.MahApps.Metro
NuExt.Minimal.Mvvm.SourceGenerator is an independent compile-time package with no NuExt package dependencies.
NuExt.System— foundational utilities for asynchronous programming, threading, lifetime management, collections, I/O, diagnostics, and BCL compatibility.
NuExt.Minimal.Mvvm— framework-neutral MVVM core with deterministic commands, asynchronous lifecycle management, validation infrastructure, and hierarchical service resolution.NuExt.Minimal.Mvvm.SourceGenerator— compile-time generation of observable properties, commands, validation infrastructure, and structured JSON localization.NuExt.Minimal.Mvvm.Wpf— WPF infrastructure for views, dialogs, documents, windows, dispatchers, application services, and deterministic cleanup.NuExt.Minimal.Mvvm.MahApps.Metro— MahApps.Metro integration for dialogs and tabbed documents.
NuExt.Minimal.Behaviors.Wpf— reusable WPF behaviors and command interactivity.NuExt.Presentation.Wpf— independent WPF presentation helpers, binding utilities, diagnostics, styles, and control extensions.
NuExt.System.Data— lightweight data-access utilities and abstractions.NuExt.System.Data.SQLite— SQLite integration and database context infrastructure.
NuExt follows several consistent principles across its packages:
-
Correctness before convenience
APIs define explicit lifecycle, ownership, synchronization, and error-handling behavior. -
Predictable runtime behavior
Commands, services, validation, view resolution, and cleanup avoid hidden control flow. -
Compile-time assistance
Source generation removes boilerplate without shifting behavior into reflection-heavy runtime machinery. -
Performance by design
Hot paths avoid unnecessary allocations, repeated reflection, and mutable shared state. -
Modular adoption
Packages remain focused and can be used independently without adopting the entire ecosystem.
NuExt packages are available from the NuExt profile on NuGet.
Each repository contains package-specific documentation, supported target frameworks, usage examples, and release information.