Skip to content

EN Build testing and release

Vinícius Campos edited this page Aug 22, 2026 · 2 revisions

Build, testing and release

Português · English home

The repository pins .NET SDK 10.0.400 with latest-patch roll-forward and also installs .NET 8 and 10 in automation. Nullable reference types, implicit usings and warnings-as-errors are enabled. Restore uses NuGet lock files.

dotnet restore Offside.sln --locked-mode
dotnet build Offside.sln -c Release --no-restore
dotnet test Offside.sln -c Release --no-build --no-restore
dotnet pack Offside.sln -c Release --no-build --no-restore -o artifacts

The solution contains the seven production projects plus tests for core, ASP.NET Core, FluentValidation, FastEndpoints, Azure App Configuration, MediatR and the tool. Library packages target their declared netstandard2.0, net8.0 and/or net10.0 frameworks; the tool targets net8.0 and rolls forward to a newer major runtime.

Continuous integration

The build CI job restores in locked mode, builds, tests, packs, checks package contents, and uploads .nupkg/.snupkg artifacts. Package validation requires the readme, license, icon and XML documentation.

MediatR compatibility is a separate CI job with a matrix for 12.0.1, 13.1.0 and 14.2.0. It is not part of the build job and is not run by the release workflow. Release tags matching v*.*.* run restore, build, the solution tests, pack and NuGet OIDC publication; that workflow does not run the dedicated MediatR version matrix.

CLI installation flow

flowchart TD
    Install[dotnet tool install --global Offside.Tool] --> Init[offside init]
    Init --> Root{--dir supplied?}
    Root -->|yes| Target[Use explicit project directory]
    Root -->|no| Cwd[Use current directory]
    Target --> Copy[Copy nine offside skills]
    Cwd --> Copy
    Copy --> Agents[.cursor, .agents and .claude skill roots]
    Copy --> Catalogs[errors catalog templates]
    Force{--force?} -->|no| Preserve[Keep existing files]
    Force -->|yes| Replace[Overwrite existing files]
Loading

offside init is scaffolding, not a runtime prerequisite. It creates a missing project directory, copies nine named skills into three agent roots, and then copies catalog templates into errors/. Without --force, existing files remain untouched. See CLI for command examples.

Release behavior and versions on this page describe the pinned base commit, not future branches or packages.

Clone this wiki locally