Skip to content

Enable opt-in static-graph (/graphBuild /isolateProjects) build for the clr subset - #92

Draft
sbomer wants to merge 1 commit into
fix/coreclr-pdb-consolidationfrom
staticgraph/clr
Draft

sbomer wants to merge 1 commit into
fix/coreclr-pdb-consolidationfrom
staticgraph/clr

Conversation

@sbomer

@sbomer sbomer commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Stacked on #1 (dotnet#135434 "Remove MoveSymbolFiles PDB consolidation..."), which this branch is based on.

Makes the clr subset buildable with MSBuild's static graph scheduler and project isolation enforcement (/graphBuild /isolateProjects). Static graph mode requires every project's full set of references to be statically determinable at evaluation time and enforces that projects only access files/outputs they declare, so several coreclr .nuget packaging projects and tool projects needed explicit ProjectReference items and AddTransitiveProjectReferencesInStaticGraph=false added alongside their existing MSBuild-task-based invocation patterns.

This is opt-in only (no change to the default dynamic build), and only the clr subset is currently supported; other subsets will be enabled incrementally in follow-up PRs.

Also adds a dedicated CI leg (eng/pipelines/runtime-static-graph.yml) that builds the clr subset with /graphBuild /isolateProjects on linux_x64_dev_innerloop, to catch regressions as this support evolves. Restore happens via a normal dynamic build step first, since Arcade's own toolset-bootstrap project isn't graph/isolate-safe; the actual static-graph build then runs as a postBuildStep invoking Build.proj directly.

Note

This PR description and implementation were generated with GitHub Copilot.

…he clr subset

Makes the clr subset buildable with MSBuild's static graph scheduler and
project isolation enforcement (/graphBuild /isolateProjects). Static graph
mode requires every project's full set of references to be statically
determinable at evaluation time and enforces that projects only access
files/outputs they declare, so several coreclr .nuget packaging projects
and tool projects needed explicit ProjectReference items and
AddTransitiveProjectReferencesInStaticGraph=false added alongside their
existing MSBuild-task-based invocation patterns.

This is opt-in only (no change to the default dynamic build) and only
the clr subset is currently supported; other subsets will be enabled
incrementally.

Also adds a dedicated CI leg (eng/pipelines/runtime-static-graph.yml) that
builds the clr subset with /graphBuild /isolateProjects on
linux_x64_dev_innerloop, to catch regressions as this support evolves.
Restore happens via a normal dynamic build step first, since Arcade's own
toolset-bootstrap project isn't graph/isolate-safe; the actual static-graph
build then runs as a postBuildStep invoking Build.proj directly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 099eec3c-119a-4097-8071-6cd952af9e7c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant