[xaprepare] Remove desktop Mono provisioning and dead Mono-related code#11324
Merged
Conversation
The `UpdateMono` xaprepare scenario installs desktop Mono on macOS, but the only consumer (mdoc in the apidocs pipeline) already installs Mono independently via `boots`. The emulator test pipelines passed `updateMono: true` but never actually used Mono for anything. Also removes dead code: - `ManagedRuntime`/`_Runtime`/`_NUnit` properties (zero consumers) - `UpdateMonoAndroidContract` target (zero callers) - `prepare-update-mono`/`shutdown-compiler-server` Makefile targets - Mono version properties (MonoDarwinPackageUrl, etc.) Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR continues the incremental removal of xaprepare Mono provisioning by deleting the dead UpdateMono scenario and associated Mono version/configuration plumbing, and by cleaning up CI YAML/Makefile usage that no longer has any effect.
Changes:
- Removed the
UpdateMonoxaprepare scenario and macOS Mono package provisioning code, along with relatedKnownConditions/KnownProperties. - Removed Mono-related MSBuild properties from
Configuration.propsand eliminated the deadUpdateMonoAndroidContracttarget. - Cleaned up Azure Pipelines templates and Makefile targets/variables that referenced Mono updates.
Reviewed changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/api-compatibility/README.md | Updates docs to reflect removal of the UpdateMonoAndroidContract target. |
| tests/api-compatibility/api-compatibility.targets | Deletes the unused UpdateMonoAndroidContract target implementation. |
| Makefile | Removes unused Mono detection/version printing and Mono-era helper targets. |
| Documentation/building/unix/dependencies.md | Updates Unix dependency docs to no longer require Mono for local builds. |
| Documentation/building/configuration.md | Removes documentation for Mono version enforcement properties. |
| Configuration.props | Removes unused Mono provisioning/runtime properties with no remaining consumers. |
| build-tools/xaprepare/xaprepare/xaprepare.targets | Removes replacements for deleted Mono-related properties in generated defaults. |
| build-tools/xaprepare/xaprepare/Scenarios/Scenario_UpdateMono.Unix.cs | Deletes the dead UpdateMono scenario. |
| build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/MacOS.cs | Removes conditional Mono package dependency wiring. |
| build-tools/xaprepare/xaprepare/Application/Properties.Defaults.cs.in | Removes default property entries for deleted Mono-related properties. |
| build-tools/xaprepare/xaprepare/Application/MonoPkgProgram.MacOS.cs | Deletes macOS Mono package installer program implementation. |
| build-tools/xaprepare/xaprepare/Application/KnownProperties.cs | Removes Mono-related property constants. |
| build-tools/xaprepare/xaprepare/Application/KnownConditions.cs | Removes the Mono-update condition and updates related comments. |
| build-tools/automation/yaml-templates/stage-msbuild-emulator-tests.yaml | Removes unused updateMono parameter usage. |
| build-tools/automation/yaml-templates/setup-test-environment.yaml | Removes updateMono parameter plumb-through. |
| build-tools/automation/yaml-templates/setup-test-environment-steps.yaml | Removes conditional xaprepare UpdateMono execution step. |
| build-tools/automation/yaml-templates/setup-test-environment-public.yaml | Removes updateMono parameter plumb-through. |
| build-tools/automation/azure-pipelines-public.yaml | Removes unused updateMono: true configuration. |
- Remove "Latest Mono" from dependency list in dependencies.md - Use consistent Mono.Android.dll.zip naming in api-compatibility README - Remove obsolete mono cil-strip.exe instructions Co-authored-by: Copilot <[email protected]>
simonrozsival
approved these changes
May 12, 2026
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
Part of incremental xaprepare removal. The
UpdateMonoxaprepare scenario is dead - the only Mono consumer (mdoc) is in the apidocs pipeline (azure-pipelines-apidocs.yaml) which provisions Mono itself viaboots, not via xaprepare.The emulator test pipelines passed
updateMono: truebut never actually used Mono for anything - it was leftover config.Changes
xaprepare deletions
Scenario_UpdateMono.Unix.csandMonoPkgProgram.MacOS.csAllowMonoUpdatecondition fromKnownConditions.csMonoDarwinPackageUrl,MonoRequiredMinimumVersion,MonoRequiredMaximumVersion,IgnoreMaxMonoVersion,IgnoreMinMonoVersion,ManagedRuntimefromKnownProperties.cs,Properties.Defaults.cs.in, andxaprepare.targetsMonoPkgProgramdependency fromMacOS.csYAML cleanup
updateMonoparameter fromsetup-test-environment-steps.yaml,setup-test-environment-public.yaml,setup-test-environment.yamlupdateMono: truefromstage-msbuild-emulator-tests.yamlandazure-pipelines-public.yamlMakefile cleanup
RUNTIMEvariable (line 6 - Mono detection, unused)mono --versionfromrun-all-testsshutdown-compiler-servertarget (VBCSCompiler kill - Mono-era MSBuild)prepare-update-monotargetConfiguration.props cleanup
ManagedRuntime,ManagedRuntimeArgs(zero consumers)MonoDarwinPackageUrl,MonoRequiredMinimumVersion,MonoRequiredMaximumVersionIgnoreMaxMonoVersion(2 lines)_Runtime,_NUnit(zero consumers)Dead target deletion
UpdateMonoAndroidContracttarget fromapi-compatibility.targets(zero callers, uses ancient net472 GenAPI.exe with$(ManagedRuntime))Documentation
dependencies.mdandconfiguration.mdto remove references to Mono version propertiesapi-compatibility/README.mdto note the removed target