Prepare Blazor workloads before dispatching to Helix - #5326
Merged
LoopedBard3 merged 2 commits intoSep 30, 2026
Merged
Conversation
Install wasm-tools once into the SDK correlation payload and make all Blazor scenario workload helpers read-only. Keep publish and measurement on Helix, avoiding partial workload uninstalls that corrupt subsequent work items. Preserve non-AOT localized publishing and pass the localized AOT argument directly instead of treating item metadata as a property. Add real MSBuild command-evaluation and Python helper regression coverage and document the lifecycle. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
LoopedBard3
enabled auto-merge (squash)
September 29, 2026 19:54
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Prepare
wasm-toolsonce in the SDK correlation payload, then prevent Blazor work items from installing or uninstalling that shared workload. Application restore, publish, and size measurement remain on Helix.PreparePayloadWorkItemthat uses the payload's SDK andNuGet.config, retaining--skip-manifest-update.--has-workload --readonly-dotnetto all eight Blazor pre-commands and--readonly-dotnetto their post-commands.WasmNativeWorkload=falseand explicitly enable its AOT mode. A comment explains why Localized selects its mode in the project rather than separate scenario scripts.Root cause
In performance-ci build 1614779, the Minimum Blazor work item partially uninstalled
wasm-toolsfrom the shared SDK: deletion failed becauseMonoTargetsTasks.dllwas locked. The following Pizza AOT work item treated the remaining pack as already installed, but itsSdk.propshad been removed. Restore consequently failed with an emptyMonoTargetsTasksAssemblyPath.The same sequence occurred on main build 1613321. This failure is independent of #5324.
Provisioning before dispatch and eliminating per-work-item workload mutation removes this cross-test corruption path.
Localized AOT behavior correction
The existing
_PublishArgsWithAOTwas item metadata referenced as an MSBuild property, soRunAOTCompilation=truewas silently omitted. This change passes the property directly. Localized AOT size results may change because the scenario now actually performs AOT compilation.Standalone scenario scripts retain their existing workload-management defaults.
Validation
test_blazor_workload.py,test_run_performance_job.py, andtest_wasm_coreclr_r2r.py.PreparePayloadWorkItemstarget using the exact failing CI SDK,11.0.100-rtm.26473.115; workload installation succeeded.An initial Pizza AOT attempt hit a local Windows native-compiler path-length limit; the same scenario passed from a shorter validation path.
Draft follow-up
Windows/Linux Helix execution across the supported SDK channels is still outstanding. Unix command generation was evaluated locally, but no Linux-host publish was run.