Skip to main content
Version: Preview (0.3.0-preview.205)

Packages

Twelve NuGet packages. Install AdCodicem.ValueObjects and add whichever of the others cover the boundaries your application actually has.

PackageWhat it gives you
AdCodicem.ValueObjectsThe one to install: contracts, source generator and analyzers.
AdCodicem.ValueObjects.AbstractionsThe contracts alone, with no dependency at all.
AdCodicem.ValueObjects.JsonCovers source-generated serializer contexts and hand-written value objects.
AdCodicem.ValueObjects.EntityFrameworkCoreConverters, comparers, and a convention that maps a whole assembly.
AdCodicem.ValueObjects.AspNetCoreMVC model binding and RFC 9457 problem details carrying the violated rule.
AdCodicem.ValueObjects.OpenApiSchema transformer for the built-in .NET OpenAPI stack.
AdCodicem.ValueObjects.FluentValidationRules that reuse what the value object already enforces.
AdCodicem.ValueObjects.DapperType handlers for raw SQL.
AdCodicem.ValueObjects.NewtonsoftJsonInterop with code that has not moved to System.Text.Json.
AdCodicem.ValueObjects.IdentifiersStripe-style public entity identifiers: acc_2K7X9…. See Entity Identifiers.
AdCodicem.ValueObjects.Identifiers.EntityFrameworkCoreFixed-width, non-Unicode columns for those identifiers.
AdCodicem.ValueObjects.TestingAn xUnit contract kit for your own value objects.

Supported frameworks​

Every package targets net10.0, so it installs into a project on .NET 10 or any later version. The twelve are released together under one version number: reference the same version of each. Their dependencies are minimums with no upper bound, and the exact minimum of each is in the package's dependency list on nuget.org. A framework's next major is supported by these same packages, never by a package per framework version (ADR-0010).

PackageTargetBuilt and tested againstOn the next .NET¹
AdCodicem.ValueObjectsnet10.0the .NET 10 SDKthe .NET 11 SDK, whose compiler runs the generator
AdCodicem.ValueObjects.Abstractionsnet10.0.NET 10.NET 11
AdCodicem.ValueObjects.Jsonnet10.0.NET 10, source generation included.NET 11, source generation included
AdCodicem.ValueObjects.EntityFrameworkCorenet10.0EF Core 10, on PostgreSQL and SQL ServerEF Core 11, on SQLite, PostgreSQL and SQL Server
AdCodicem.ValueObjects.AspNetCorenet10.0ASP.NET Core 10ASP.NET Core 11
AdCodicem.ValueObjects.OpenApinet10.0ASP.NET Core 10, with Microsoft.OpenApi 2ASP.NET Core 11, with Microsoft.OpenApi 3
AdCodicem.ValueObjects.FluentValidationnet10.0FluentValidation 12FluentValidation 12 on .NET 11
AdCodicem.ValueObjects.Dappernet10.0Dapper 2.1, on PostgreSQL and SQL ServerDapper 2.1, on SQLite, PostgreSQL and SQL Server
AdCodicem.ValueObjects.NewtonsoftJsonnet10.0Newtonsoft.Json 13Newtonsoft.Json 13 on .NET 11
AdCodicem.ValueObjects.Identifiersnet10.0.NET 10.NET 11
AdCodicem.ValueObjects.Identifiers.EntityFrameworkCorenet10.0EF Core 10, on PostgreSQL and SQL ServerEF Core 11, on SQLite, PostgreSQL and SQL Server
AdCodicem.ValueObjects.Testingnet10.0xUnit v3 4xUnit v3 4 on .NET 11

¹ On the .NET 11 release candidate, by a CI job that installs the packages each commit builds into a net11.0 application (How the library is tested). It informs and blocks nothing until .NET 11 ships.

Trying a preview​

Between stable releases, a preview of every package is published to nuget.org when something a package ships has changed, checked every week. It carries the number of the release it leads to, 0.3.0-preview.172 for instance, and every package is published at that version:

dotnet add package AdCodicem.ValueObjects --prerelease

Previews receive no fixes of their own: a fix reaches the next preview and the next release. Every package, and every assembly inside it, carries a signed build provenance attestation; the security policy says how to check one. The preview of this documentation describes the latest preview, and its label names it.

Why this many packages​

Each integration is its own package so that adding EF Core support doesn't pull FluentValidation into a service that has no use for it, and so that a trimmed or AOT-published app only carries the generator's output for the boundaries it actually crosses. AdCodicem.ValueObjects is the only package with a source generator in it; everything else is a thin, generic-closed integration over the contracts in Abstractions.