Compatibility
Compatibility
Package and framework matrix
| Package | Target frameworks | Purpose |
|---|---|---|
TaskFlow |
netstandard2.0, net8.0, net10.0 |
Core flows, scheduler contracts, cancellation, timeout, error observation, annotations, and interception |
TaskFlow.Extensions.Time |
netstandard2.0 |
WithThrottle for older targets using Microsoft.Bcl.TimeProvider |
TaskFlow.Microsoft.Extensions.DependencyInjection |
netstandard2.0, net8.0, net10.0 |
Scoped and named flow registration and factories |
TaskFlow.Microsoft.Extensions.Logging |
netstandard2.0, net8.0, net10.0 |
Structured operation lifecycle logging |
The core package includes WithThrottle when targeting .NET 8 or .NET 10. Its netstandard2.0 asset omits that source because TimeProvider is not part of the target framework. Install TaskFlow.Extensions.Time in a netstandard2.0 consumer to receive the same public API through Microsoft.Bcl.TimeProvider.
Language and runtime use
The packages can be consumed from compatible target frameworks regardless of the repository’s build SDK. Repository builds currently use the .NET 10 SDK, and the test projects execute against .NET 8 and .NET 10.
IAsyncDisposable support for the netstandard2.0 asset is supplied through Microsoft.Bcl.AsyncInterfaces. Prefer await using where the consuming language and runtime support it.
Package selection examples
For a .NET 8 or .NET 10 application:
dotnet add package TaskFlow
For a library targeting netstandard2.0 that needs throttling:
dotnet add package TaskFlow
dotnet add package TaskFlow.Extensions.Time
Add integration packages only when needed:
dotnet add package TaskFlow.Microsoft.Extensions.DependencyInjection
dotnet add package TaskFlow.Microsoft.Extensions.Logging
All TaskFlow APIs use the System.Threading.Tasks.Flow namespace. Logging configuration also uses Microsoft.Extensions.Logging, and registration uses Microsoft.Extensions.DependencyInjection.