DataLinq.Dev.CLI
DataLinq.Dev.CLI is the repo-local wrapper for dotnet restore, build, test, environment diagnosis, and controlled passthrough execution.
Use it when you want a stable execution profile, concise output, and predictable artifacts.
Why It Exists
Raw dotnet is a bad default for this repo when you care about repeatability.
The wrapper normalizes repo-local execution roots, keeps logs under artifacts/dev/, and gives you output modes that are usable in both normal terminal work and agent-driven workflows.
Commands
The command examples assume your current directory is the repo's src folder. The Dev CLI runs inner dotnet commands from the repo root, so explicit target paths passed to the Dev CLI are still repo-root-relative.
doctor
Diagnoses the local dotnet and NuGet execution environment.
dotnet run --project DataLinq.Dev.CLI -- doctor --profile repo
What it checks:
- repo-local execution roots
- writable tool paths
dotnet --version- installed SDK count
dotnet --info- workload resolver and workload auto-import presence
- NuGet sources from the repo-local
NuGet.Config - top-level cached package roots
Use this first when the environment looks suspicious.
restore
Runs dotnet restore with the repo-local execution profile.
dotnet run --project DataLinq.Dev.CLI -- restore
dotnet run --project DataLinq.Dev.CLI -- restore --output summary
build
Runs dotnet build with concise default output.
dotnet run --project DataLinq.Dev.CLI -- build
dotnet run --project DataLinq.Dev.CLI -- build --output errors
Useful options:
--configurationDefaults toDebug.--frameworkOptional target framework.--no-restoreSkips restore before build.--binlog auto|always|neverControls binary log generation.
test
Runs dotnet test with concise failure-focused output.
dotnet run --project DataLinq.Dev.CLI -- test src/DataLinq.Tests.Unit/DataLinq.Tests.Unit.csproj
dotnet run --project DataLinq.Dev.CLI -- test src/DataLinq.Generators.Tests/DataLinq.Generators.Tests.csproj --output failures
Useful options:
--configurationDefaults toDebug.--frameworkOptional target framework.--filterStandarddotnet testfilter expression.--no-buildSkips build before test.--no-restoreSkips restore before test.
The optional target defaults to src/DataLinq.sln.
size-report
Publishes the Phase 8C constrained-platform smoke targets and writes a repeatable compatibility payload report.
dotnet run --project DataLinq.Dev.CLI -- size-report --target phase8c
dotnet run --project DataLinq.Dev.CLI -- size-report --targets aot,trim --no-restore
dotnet run --project DataLinq.Dev.CLI -- size-report --targets wasm,wasm-aot --format markdown
The default phase8c target set includes:
aotNative AOT publish ofsrc/DataLinq.AotSmoke.trimtrimmed self-contained publish ofsrc/DataLinq.TrimSmoke.wasmno-AOT Blazor WebAssembly publish ofsrc/DataLinq.BlazorWasm.wasm-aotBlazor WebAssembly AOT publish ofsrc/DataLinq.BlazorWasm.
Each report includes total payload size, symbol-excluded size, file count, .br and .gz asset totals, largest files, publish warnings grouped by owner, smoke status, and banned Roslyn payload findings.
Useful options:
--targetsLimits the run toaot,trim,wasm,wasm-aot, or a comma-separated subset.--runtimeRuntime identifier for native publish targets. Defaults to the current OS and architecture.--topNumber of largest files to list per target.--max-total-size-mb,--max-symbol-excluded-size-mb,--max-file-countAdvisory thresholds. Exceeding them is reported as a warning.--fail-on-thresholdMakes advisory threshold findings fail the command.--fail-on-banned-payloadMakes banned Roslyn payload findings fail the command. Use this for the Phase 8C runtime payload gate after the package graph has been refreshed.--skip-smokeSkips executable smoke runs after publish. Browser WebAssembly smoke is reported as not automated by this command.--format summary|markdown|jsonControls console output. The JSON and Markdown artifacts are always written.
Reports are written under artifacts/dev/compat-size-report/<timestamp>/ as report.json and report.md. Raw publish and smoke logs are also written under artifacts/dev/.
package-report
Inspects packed NuGet output for the public package set.
dotnet run --project DataLinq.Dev.CLI -- package-report --package-dir artifacts/nuget-release/<timestamp>
dotnet run --project DataLinq.Dev.CLI -- package-report --package-dir artifacts/nuget-release/<timestamp> --format markdown
Use this after publish-nuget.ps1 -PackOnly or another fresh pack output directory. Do not point it at a long-lived package cache if you want release evidence; stale packages make the report noisy on purpose.
The default expected package set is:
DataLinqDataLinq.SQLiteDataLinq.MySqlDataLinq.CLIDataLinq.Tools
The default runtime package set is narrower:
DataLinqDataLinq.SQLiteDataLinq.MySql
The report checks:
- every expected public package is present
- no unexpected package ids are present
- every
.nupkghas a matching.snupkg - runtime package dependency groups do not reference
Microsoft.CodeAnalysis.* - runtime package
lib/andruntimes/assets do not contain Roslyn payloads - the
DataLinqsource generator lives underanalyzers/dotnet/cs - analyzer payloads are not placed under runtime assets
Useful options:
--expected-packagesOverrides the public package set with a comma-separated list, orpublic.--runtime-packagesOverrides the runtime package set with a comma-separated list, orruntime.--allow-unexpected-packagesReports unexpected package ids without failing.--allow-missing-symbolsReports missing.snupkgfiles without failing.--allow-runtime-roslynReports runtime Roslyn package dependencies or payload assets without failing.--allow-analyzer-leaksReports missing or misplaced analyzer assets without failing.--format summary|markdown|jsonControls console output. The JSON and Markdown artifacts are always written.
Reports are written under artifacts/dev/package-report/<timestamp>/ as report.json and report.md.
exec
Runs an arbitrary dotnet command through the same repo-local execution profile.
dotnet run --project DataLinq.Dev.CLI -- exec -- --info
dotnet run --project DataLinq.Dev.CLI -- exec -- build src/DataLinq.sln -c Release
This is the escape hatch, not the main workflow.
Prefer the dedicated commands unless you actually need a command surface the wrapper does not expose directly.
Execution Profiles
Supported profiles:
autoDefault. Resolves the best profile for the current environment.repoNormal repo-local execution.sandboxIntended for constrained or offline-ish environments.ciCI-oriented execution profile.
Output Modes
Supported output modes:
quietDefault. One-line success and concise failure.summaryAdds a slightly richer summary.errorsFocuses on distinct compiler and NuGet errors.failuresFocuses on test failures and failing command summaries.rawPrints the underlying command output.diagUses diagnostic verbosity and preserves full detail in artifacts.
Targets and Additional Arguments
restore, build, and test all accept an optional target path.
If you omit it, the default target is src/DataLinq.sln.
Each command also accepts extra dotnet arguments after --.
Example:
dotnet run --project DataLinq.Dev.CLI -- build src/DataLinq.sln -- --no-incremental
Artifacts
Artifacts are written under artifacts/dev/.
Build runs can also emit binary logs depending on the selected --binlog mode.
If you need the full raw output, the artifact logs are the first place to look. They are the source of truth, not whatever condensed line happened to print to the terminal.