FclEx means fundamental class libraries extensions.
It started as a set of small, practical extensions for the .NET standard libraries. Over time it also grew into a collection of focused extensions for common libraries such as Microsoft.Extensions.*, ASP.NET Core, Entity Framework Core, Dapper, Serilog, SlackNet, RabbitMQ, Kafka, Newtonsoft.Json, YamlDotNet, and xUnit. The FclEx prefix is kept across the repository for consistency.
This repository is a multi-package library collection. Each package is intentionally scoped around one area, while sharing the same conventions and core utility layer.
Package Details
| Package | Target Frameworks |
|---|---|
| FclEx.Abp | ABP integration helpers for FclEx, including module setup, conventional registration, telemetry suppression, and AspectCore-based login retry and return-value caching interceptors. |
| FclEx.AspNetCore | ASP.NET Core helpers for requests, sessions, model state, endpoints, authorization, request buffering, decompression, and logging context. |
| FclEx.AspNetCore.Testing | Integration-test helpers built around WebApplicationFactory, test content roots, and selective external HTTP forwarding. |
| FclEx.Caching | Cache abstractions and EasyCaching-based implementations for FclEx, including typed cache managers, configuration helpers, and System.Text.Json serialization patches. |
| FclEx.Caching.Redis | Redis-backed caching extensions for FclEx, including EasyCaching Redis integration, typed Redis collection wrappers, and collection configuration helpers. |
| FclEx.Core | Foundational extensions, operation results, action pipelines, domain entity contracts, collection helpers, JSON/XML helpers, and general utilities. |
| FclEx.Dapper | Dapper and ADO.NET helpers for CRUD operations, transactions, dynamic parameters, SQL adapters, and type handlers. |
| FclEx.DependencyInjection | Convenience extensions for service registration, replacement, removal, decoration, scopes, and provider lookup. |
| FclEx.EfCore | Entity Framework Core query, update, soft-delete, schema, SSH tunnel, and test-model helpers. |
| FclEx.Http | HTTP service helpers, request actions, response parsing, downloads/uploads, cookies, authentication, AngleSharp HTML helpers, and user-client abstractions. |
| FclEx.Logging | Microsoft logging helpers for scoped properties, logger creation, operation timing, null fallbacks, and logging cleanup. |
| FclEx.Messaging | Kafka and RabbitMQ helpers for consumers, publishers, routers, message conversion, retry metadata, and messaging logs. |
| FclEx.NewRelic | New Relic agent helpers and NerdGraph NRQL client support. |
| FclEx.NewtonsoftJson | Newtonsoft.Json converters and helpers for flexible JSON parsing, serialization, JToken, and XML conversion. |
| FclEx.Options | Helpers for registering prebuilt, factory-created, and service-configured options. |
| FclEx.Serilog | Serilog configuration helpers, enrichers, filters, formatters, and sinks. |
| FclEx.Serilog.Slack | Serilog sink support for sending batched log events to Slack. |
| FclEx.Slack | SlackNet registration, Slack API extensions, message builders, webhook helpers, and table-to-message formatting. |
| FclEx.Xunit | xUnit v2 assertions, conditional test attributes, output helpers, logging integration, and test utilities. |
| FclEx.Xunit.v3 | xUnit v3 variant of the FclEx test helper package. |
| FclEx.YamlDotNet | YamlDotNet helpers, options, converters, naming conventions, and YAML node extensions. |
Start with FclEx.Core when you need general .NET extensions and utility types. Add one of the integration packages only when you are using the corresponding library or framework.
For example:
- Use FclEx.DependencyInjection for registration helpers around
IServiceCollection. - Use FclEx.Http for reusable HTTP request/response workflows.
- Use FclEx.AspNetCore when those HTTP helpers need to live inside an ASP.NET Core app.
- Use FclEx.Xunit or FclEx.Xunit.v3 from test projects, depending on the xUnit generation you target.
src/contains the library projects.test/contains the corresponding test projects.build/contains build and release helper scripts.misc/contains supporting projects such as benchmarks.
The packages are small by design: most APIs are extension methods, focused helpers, or composable building blocks. Prefer referencing the package that matches the library you are extending instead of pulling in the full repository surface.