Package compatibility
Which packages require which, the supported target frameworks, and the documentation's versioning policy.
At a glance
| Package | Requires | Target frameworks | Current major |
|---|---|---|---|
| Immediate.Handlers | — | net8.0 – net10.0 | 3.x |
| Immediate.Validations | Immediate.Handlers | net8.0 – net10.0 | 3.x |
| Immediate.Apis | Immediate.Handlers, ASP.NET Core | net8.0 – net10.0 | 6.x |
| Immediate.Cache | Immediate.Handlers, IMemoryCache | net8.0 – net10.0 | 2.x |
| Immediate.Injections | — | net8.0 – net10.0 | 1.x |
| Immediate.Jobs | Immediate.Handlers, hosted service | net8.0 – net11.0 | preview |
Immediate.Handlers is the core. Validations, Apis and Cache each take a package reference on it and are meaningless without it — they extend handlers rather than standing alone. You do not need to install it separately; it comes in transitively.
Mixing and matching
The packages are opt-in individually. Common combinations:
- Handlers alone — a compile-time mediator in a console app, a Blazor app, or behind ASP.NET Core controllers you already have.
- Handlers + Apis — minimal-API endpoints generated straight from handlers.
- Handlers + Validations — request validation as a pipeline behavior, with or without HTTP.
- Injections alone — attribute-driven DI registration, with no mediator anywhere in sight.
You can also mix in non-platform libraries: FluentValidation alongside Immediate.Handlers, or ASP.NET Core controllers instead of Immediate.Apis. The cookbook has worked examples of each.
Target frameworks
The released packages multi-target net8.0, net9.0 and net10.0. Immediate.Jobs currently tracks main and additionally targets net11.0.
C# language version
The packages target LangVersion latest and work on C# 12 and later, but one generated
signature adapts: the tags parameter on the registration methods is params ReadOnlySpan<string> on C# 13 and later and params string[] on C# 12 and earlier.
See Tags and conditional registration.
Versioning policy for these docs
main implementation instead of a latest release, including APIs and storage schemas
that may change before stability. Package commands use --prerelease and become usable
when the first preview is published.The packages version independently. A major bump in one does not imply a bump in the others, and there is no combined “platform version” to pin.