Skip to content

Unpin MSBuild dependencies to restore VMR source-build coherency - #20278

Merged
T-Gro merged 3 commits into
mainfrom
t-gro-super-potato
Aug 18, 2026
Merged

Unpin MSBuild dependencies to restore VMR source-build coherency#20278
T-Gro merged 3 commits into
mainfrom
t-gro-super-potato

Conversation

@T-Gro

@T-Gro T-Gro commented Aug 17, 2026

Copy link
Copy Markdown
Member

The Microsoft.Build.* deps were pinned at 18.10.0-1.26370.18 to hold the net10.0 asset line, but the product already moved to net11.0. The .NET 11 VMR source-builds MSBuild on the 18.11.0 line (VS 18.11), so the pinned 18.10 reference can't be satisfied in-tree and leaks to an external feed as a prebuilt in the source-only leg, dragging its net10 System.* closure with it.

Unpinning lets the existing msbuild → fsharp VS 18.11 subscription flow the coherent build again, and the CPM runtime floor moves to 10.0.10 because net11 MSBuild pulls System.Collections.Immutable / System.Reflection.Metadata / System.Security.Cryptography.Xml at >= 10.0.10.

Also builds the EndToEndBuildTests job with -ci so Arcade keeps UpdateXlfOnBuild off. Without it that job ran as a dev build and intermittently failed with MSB4057: The target "UpdateXlf" does not exist on FSharp.Core's inner-TFM builds — a flake that also hits main. Every other build job in this pipeline already passes -ci.

The Microsoft.Build.* deps were pinned at 18.10.0-1.26370.18 to keep them on
the net10.0 asset line while the product targeted net10.0. The product moved to
net11.0 (#20080) before the pin landed, so the pin's own unpin condition was
already met. In the VMR source-only build this pin causes prebuilts: the VMR
source-builds MSBuild on the 18.11.0 line (VS 18.11 channel), so an 18.10.0
reference cannot be satisfied in-tree and leaks to an external feed, dragging
its net10 System.* transitive closure with it.

Unpin the four Microsoft.Build.* deps and let the existing msbuild -> fsharp
VS 18.11 subscription flow the coherent build (darc update-dependencies), and
bump the CPM runtime floor 10.0.9 -> 10.0.10 since net11 MSBuild 18.11 pulls
System.Collections.Immutable / System.Reflection.Metadata / Security.Cryptography.Xml
at >= 10.0.10. VS 18.11 is the same channel the VMR (main and release/11.0.1xx)
consumes MSBuild from, restoring coherency and removing the prebuilts.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3a3d99e1-5b05-409a-afd5-c8d9676360f4
@github-actions

Copy link
Copy Markdown
Contributor

✅ No release notes required

@github-project-automation github-project-automation Bot moved this from New to In Progress in F# Compiler and Tooling Aug 17, 2026
@github-actions github-actions Bot added the AI-Tooling-Check-Bypassed Tooling check: non-fork PR, not diff-analyzed label Aug 17, 2026
@T-Gro
T-Gro enabled auto-merge (squash) August 17, 2026 12:16
@T-Gro
T-Gro requested a review from abonie August 18, 2026 07:51
The EndToEndBuildTests job ran .\Build.cmd -c Release -pack without -ci, so
Arcade treated it as a dev build and defaulted UpdateXlfOnBuild=true. That runs
the XliffTasks UpdateXlf target after each inner-TFM build of the multi-targeted
FSharp.Core, which intermittently fails with 'MSB4057: The target "UpdateXlf"
does not exist' when the XliffTasks import has not been applied for that inner
build yet. The same flake hits main (e.g. build 1555456). Adding -ci keeps
UpdateXlfOnBuild off, matching every other build job in this pipeline (including
the -ci -pack AheadOfTime job).

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3a3d99e1-5b05-409a-afd5-c8d9676360f4
@T-Gro
T-Gro force-pushed the t-gro-super-potato branch from 74c6bb9 to cc0cbcb Compare August 18, 2026 09:05
@T-Gro
T-Gro merged commit c939fe3 into main Aug 18, 2026
56 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in F# Compiler and Tooling Aug 18, 2026
@T-Gro
T-Gro deleted the t-gro-super-potato branch August 18, 2026 12:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI-Tooling-Check-Bypassed Tooling check: non-fork PR, not diff-analyzed

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants