Skip to content

.NET

  • Status: Preview
  • Last verified: 2026-04-26
  • Data source: apps/docs/src/data/language-support.yaml (dotnet)
  1. In your .NET project root, restore dependencies: dotnet restore.
  2. Bootstrap LumenFlow workflow files: npx @lumenflow/cli@latest.
  3. Run workflow smoke: pnpm wu:prep --id WU-EXAMPLE.

A dedicated companion example repo is in preparation.

npx @lumenflow/cli@latest
pnpm wu:claim --id WU-EXAMPLE --lane "Framework: Core"

Native NuGet tool channel support is out of scope in this initiative.

Since WU-2547, lumenflow init auto-detects the dotnet preset from the presence of any *.csproj or *.sln file in the target directory. A new .NET project initialised by LumenFlow will already have preset: dotnet wired through workspace.yaml and all onboarding templates (formatter guidance, troubleshooting recipes) rendered with dotnet format rather than pnpm prettier --write. No explicit flag is needed in the common case.

The explicit configuration is still supported as an override when auto-detection picks the wrong preset (for example a repo that mixes .NET code with a non-.NET root layout):

software_delivery:
  gates:
    execution:
      preset: dotnet

An explicit --preset dotnet on the lumenflow init command line has the same effect and always wins over auto-detection.

Preset commands from packages/@lumenflow/core/src/gates-presets.ts:

dotnet restore
dotnet format --verify-no-changes
dotnet build --no-restore -warnaserror
dotnet test --no-restore

.NET repos can still declare tests.unit in their WU specs as automated verification evidence. When wu:prep runs under the dotnet preset, LumenFlow uses the preset-aware fallback to the configured default test flow instead of trying JavaScript-style path-scoped execution.

In practice, that means you usually do not need --full-tests just to avoid a scoped-runner mismatch. Keep --full-tests for the cases where you explicitly want to force the default incremental/full test flow.

pnpm wu:prep --id WU-EXAMPLE