Docs (.NET 11): scope legacy Mono runtime controls - #3520
Conversation
PoliCheck Scan ReportThe following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans. ✅ No issues foundMore information about PoliCheckInformation: PoliCheck | Severity Guidance | Term |
|
Learn Build status updates of commit 6116ef1: ✅ Validation status: passed
For more details, please refer to the build report. |
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved scoping and cross-version link inconsistencies could mislead .NET 11 and intentional Mono users.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Adds .NET 11 scoping for legacy Mono controls and documents Android CoreCLR/ReadyToRun and Apple migration guidance.
Changes:
- Scope Android and Apple Visual Studio properties by framework version.
- Add .NET 11 Android ReadyToRun guidance.
- Clarify Apple SGen migration guidance.
File summaries
| File | Summary and final comments |
|---|---|
docs/migration/apple-projects.md |
Adds .NET 11 SGen guidance. Nits: scope SGen mappings to .NET 10 and earlier (2 votes); restrict warnings to CoreCLR migrations because UseMonoRuntime=true remains supported (1 vote). |
docs/migration/android-projects.md |
Adds .NET 11 CoreCLR and ReadyToRun guidance. Nit: coordinate or version the linked runtime guidance, which currently contradicts the Android .NET 11 defaults (1 vote). |
docs/deployment/visual-studio-properties.md |
Scopes legacy runtime controls. Nits: qualify Android and iOS statements to CoreCLR projects and address the cross-version Apple runtime link (1 vote each). |
Review details
Suppressed comments (5)
docs/deployment/visual-studio-properties.md:589
- This new .NET 11 link has the same cross-version problem for Apple guidance: the current
runtimes-compilation.mdpage still lists iOS as Mono + Mono AOT in its defaults table and describes CoreCLR on iOS as experimental. A .NET 11 reader can therefore get the opposite of this paragraph's claim that iOS uses CoreCLR. Coordinate the runtime-page update or link to versioned content before publishing this guidance.
The **LLVM**, **Float operations**, and **Garbage collector** controls configure the Mono runtime and aren't applicable to .NET 11 iOS projects, which use CoreCLR. For supported runtime and compilation options, see [Runtimes and compilation in .NET MAUI](runtimes-compilation.md).
docs/deployment/visual-studio-properties.md:509
- CoreCLR is the default for normal .NET 11 Android
Releasebuilds, butUseMonoRuntime=trueremains an opt-out. As written, this says the legacy controls are inapplicable to every .NET 11 Android project, including projects that deliberately use Mono; qualify the statement to CoreCLR projects and identify the defaultReleasescope.
The **AOT**, **LLVM**, **Startup Tracing**, and **Garbage Collection** controls configure the Mono runtime and aren't applicable to .NET 11 Android projects, which use CoreCLR. For supported runtime and compilation options, see [Runtimes and compilation in .NET MAUI](runtimes-compilation.md).
docs/deployment/visual-studio-properties.md:589
UseMonoRuntime=trueis still documented as an opt-out for .NET 11, so this wording is too broad for iOS projects that intentionally remain on Mono. Qualify the statement to projects that use CoreCLR, matching the migration guidance and the actual runtime choice.
The **LLVM**, **Float operations**, and **Garbage collector** controls configure the Mono runtime and aren't applicable to .NET 11 iOS projects, which use CoreCLR. For supported runtime and compilation options, see [Runtimes and compilation in .NET MAUI](runtimes-compilation.md).
docs/migration/android-projects.md:190
- At this branch's base, the linked
runtimes-compilation.mdpage's default table still lists Android Release asMono + Mono AOT(lines 108-120), so following this new .NET 11 link presents guidance that contradicts this paragraph. Because that page is not changed here and #3511 is separate, this needs coordinated merge ordering or a versioned/updated target before the link is used.
Normal .NET 11 Android `Release` builds use the supported CoreCLR ReadyToRun path. Composite partial ReadyToRun is enabled by default. You can set `$(MauiEnableFullReadyToRun)` to `true` to enable full ReadyToRun, which can improve startup or runtime performance at the cost of package size. For more information, see [Runtimes and compilation in .NET MAUI](../deployment/runtimes-compilation.md#readytorun-r2r).
docs/migration/apple-projects.md:51
UseMonoRuntime=trueremains the documented opt-out for .NET 11, so this note currently tells projects that intentionally use Mono to discard properties that still configure their selected runtime. Restrict the warning to migrations targeting a .NET 11 CoreCLR project.
> When migrating projects for iOS, macOS, or tvOS to .NET 11, don't copy `$(MtouchEnableSGenConc)` or `$(EnableSGenConc)`. These properties configure Mono's SGen garbage collector and don't apply to CoreCLR.
- Files reviewed: 3/3 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
6116ef1 to
dbe464a
Compare
PoliCheck Scan ReportThe following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans. ✅ No issues foundMore information about PoliCheckInformation: PoliCheck | Severity Guidance | Term |
|
Learn Build status updates of commit dbe464a: ✅ Validation status: passed
For more details, please refer to the build report. |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
PoliCheck Scan ReportThe following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans. ✅ No issues foundMore information about PoliCheckInformation: PoliCheck | Severity Guidance | Term |
|
Learn Build status updates of commit 0b6174f: ✅ Validation status: passed
For more details, please refer to the build report. |
Clarified the default runtime for .NET 11 Android projects. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
PoliCheck Scan ReportThe following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans. ✅ No issues foundMore information about PoliCheckInformation: PoliCheck | Severity Guidance | Term |
|
Learn Build status updates of commit 4dc3f69: ✅ Validation status: passed
For more details, please refer to the build report. |
|
@jonathanpeppers @rolfbjarne could you please take a look if this is correct? |
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
PoliCheck Scan ReportThe following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans. ✅ No issues foundMore information about PoliCheckInformation: PoliCheck | Severity Guidance | Term |
|
Learn Build status updates of commit 8a1aa63: ✅ Validation status: passed
For more details, please refer to the build report. |
PoliCheck Scan ReportThe following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans. ✅ No issues foundMore information about PoliCheckInformation: PoliCheck | Severity Guidance | Term |
|
Learn Build status updates of commit 71851f8: ✅ Validation status: passed
For more details, please refer to the build report. |
|
@rolfbjarne can you please re-review? It should be done - if you can merge it, please do so. |
|
I can't merge, but I think @jfversluis can |

Summary
Adds narrow .NET 11 scoping to legacy Mono runtime controls while preserving the existing .NET 10-and-earlier migration guidance.
Migration guidance
Normal .NET 11 Android
Releasebuilds use CoreCLR with composite partial ReadyToRun by default. Full ReadyToRun can be enabled withMauiEnableFullReadyToRun=true, with the documented package-size tradeoff.This PR is independent from #3511 (DOC-001), but uses its approved CoreCLR and ReadyToRun terminology. There are no overlapping changed files, and no files owned by DOC-001, DOC-002, or DOC-003 are modified.
Files changed
docs/deployment/visual-studio-properties.mddocs/migration/android-projects.mddocs/migration/apple-projects.mdValidation
markdownlint-cli2: 0 errors.net-maui-10.0andnet-maui-11.0filtered-view checks: passed for all changed ranges.readytorun-r2ranchor: resolved in DocFX output.git diff --check: passed.Related implementation
Internal previews
Build report