Skip to content

Local Development

Stable Build Reviewed 2026-09-16 purview-dev/build build-pipeline cd ci composite-action csharp devops dogfooding dotnet github-actions modular-pipelines nuget reusable-workflow

Local work uses the just recipes in the Justfile (which delegate to plain dotnet/bun commands) or the shared pipeline tool directly.

Terminal window
dotnet tool install Purview.Build --tool-path ./.tools
./.tools/purview-build

Omit --version to install the latest stable release. For a pinned local tool manifest, add it to .config/dotnet-tools.json and run dotnet tool restore.

RecipePurpose
just buildBuild src/Build.slnx (Debug)
just test / just test-unitRun tests with a TUnit tree-node filter (unit filter: /*/*/*/*[Category=Unit])
just lint-check / just lint-fixCSharpier check / format
just packdotnet pack with the current package.json version
just pipeline-prRun the shared tool (restore, build, lint, tests)
just pipeline-buildRun the shared tool without tests
just pipeline-releaseRun the shared tool with Release:Mode=NuGet
just pipeline-testsRun the shared tool with tests enabled
just pipeline-local-releaseLint-fix, then run the shared tool with Release:Mode=LocalNuGet
just clean-all / just scrubClean build outputs

just pipeline-* installs the Purview.Build tool to .tools/purview-build from nuget.org when it is not already present.

Release:Mode=LocalNuGet pushes packages to a local feed and is only honoured when the tool runs locally — it is ignored in CI.

Terminal window
LOCAL_NUGET_FEED_PATH=C:/local/nuget-feed/ ./.tools/purview-build --Release:Mode=LocalNuGet

The local feed path must be an absolute path. just runs recipes through the shell, which strips backslashes from unquoted arguments, so a backslash-based Windows path is mangled before the tool sees it and is rejected. Use the LOCAL_NUGET_FEED_PATH environment variable, or forward slashes:

Terminal window
just pipeline-local-release --PublishLocalNuGet:LocalFeedPath=C:/local/nuget-feed/

By default the module overwrites existing packages, clears the NuGet global-packages and HTTP caches for the published packages, and shuts down the dotnet build server afterwards (all configurable under PublishLocalNuGet).

The tool locates the repository root by walking up from the current working directory to the nearest package.json. Run purview-build from within the repository. MODULAR_PIPELINES_DIRECTORY can override the directory containing appsettings.json.