[mobile] .NET 11 mobile runtime configuration updates#11632
[mobile] .NET 11 mobile runtime configuration updates#11632kotlarmilos wants to merge 4 commits into
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The MAUI integration stage installs the full maui workload, which pulls mobile runtime workloads that are no longer produced for .NET 11. Remove the stage from the public and internal pipelines and drop the now-unused RunMAUITestJob variable. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
There was a problem hiding this comment.
Pull request overview
This PR updates the repo’s .NET 11 “mobile runtime” configuration by removing Mono mobile-related dependencies (notably the Mono toolchain workload manifest) and pruning CI/build tooling paths that were exercising Mono-based mobile workloads/runtimes, while temporarily pinning to a specific .NET 11 preview SDK/feed to validate the new configuration.
Changes:
- Remove Mono toolchain workload manifest dependency/version plumbing from
eng/*andxaprepare. - Remove Mono-runtime test lanes (and MAUI integration test stages) from build-tools Azure Pipelines templates.
- Update restore inputs for validation (temporary): add
general-testingfeed and pin .NET 11 preview versions.
Show a summary per file
| File | Description |
|---|---|
| NuGet.config | Adds the general-testing feed for temporary validation restores. |
| eng/Versions.props | Moves to a pinned .NET 11 preview SDK version; removes Mono toolchain manifest version properties. |
| eng/Version.Details.xml | Updates .NET dependency versions/SHA; removes Mono toolchain manifest dependency entry. |
| build-tools/xaprepare/xaprepare/xaprepare.targets | Stops generating replacements for removed Mono manifest properties. |
| build-tools/xaprepare/xaprepare/Steps/Step_InstallDotNetPreview.cs | Removes Mono toolchain manifest copy logic; keeps Emscripten manifest copy. |
| build-tools/xaprepare/xaprepare/package-download.proj | Removes Mono runtime pack downloads and Mono toolchain manifest downloads (now only Android CoreCLR runtime + Emscripten manifests). |
| build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.cs | Removes Mono toolchain manifest package directory helpers. |
| build-tools/xaprepare/xaprepare/Application/Properties.Defaults.cs.in | Removes default properties for Mono manifest/version variables. |
| build-tools/xaprepare/xaprepare/Application/KnownProperties.cs | Removes Mono manifest/version property names. |
| build-tools/scripts/DotNet.targets | Removes MAUI workload install step from the helper targets. |
| build-tools/create-packs/ConfigureLocalWorkload.targets | Simplifies “ConfigureLocalWorkload” to only install the Android manifest (no dependency-install workaround). |
| build-tools/automation/yaml-templates/variables.yaml | Removes the RunMAUITestJob variable. |
| build-tools/automation/yaml-templates/stage-package-tests.yaml | Removes Mono-runtime APK instrumentation legs (Interpreter/NoAot/LLVM/etc). |
| build-tools/automation/azure-pipelines.yaml | Removes MAUI test stage and dependency edges from the private pipeline definition. |
| build-tools/automation/azure-pipelines-public.yaml | Removes MAUI test stage from the public pipeline definition. |
Copilot's findings
- Files reviewed: 15/15 changed files
- Comments generated: 3
| <ItemGroup> | ||
| <PackageDownload Include="Microsoft.NETCore.App.Runtime.Mono.android-arm" Version="[$(DotNetRuntimePacksVersion)]" /> | ||
| <PackageDownload Include="Microsoft.NETCore.App.Runtime.Mono.android-arm64" Version="[$(DotNetRuntimePacksVersion)]" /> | ||
| <PackageDownload Include="Microsoft.NETCore.App.Runtime.Mono.android-x86" Version="[$(DotNetRuntimePacksVersion)]" /> | ||
| <PackageDownload Include="Microsoft.NETCore.App.Runtime.Mono.android-x64" Version="[$(DotNetRuntimePacksVersion)]" /> | ||
| <PackageDownload Include="Microsoft.NETCore.App.Runtime.android-arm64" Version="[$(DotNetRuntimePacksVersion)]" /> | ||
| <PackageDownload Include="Microsoft.NETCore.App.Runtime.android-x64" Version="[$(DotNetRuntimePacksVersion)]" /> | ||
| <PackageDownload Include="Microsoft.NET.Workload.Mono.ToolChain.Current.Manifest-$(DotNetMonoManifestVersionBand)" Version="[$(MicrosoftNETWorkloadMonoToolChainPackageVersion)]" /> | ||
| <PackageDownload Include="Microsoft.NET.Workload.Mono.ToolChain.net6.Manifest-$(DotNetMonoManifestVersionBand)" Version="[$(MicrosoftNETWorkloadMonoToolChainPackageVersion)]" /> | ||
| <PackageDownload Include="Microsoft.NET.Workload.Mono.ToolChain.net7.Manifest-$(DotNetMonoManifestVersionBand)" Version="[$(MicrosoftNETWorkloadMonoToolChainPackageVersion)]" /> | ||
| <PackageDownload Include="Microsoft.NET.Workload.Mono.ToolChain.net8.Manifest-$(DotNetMonoManifestVersionBand)" Version="[$(MicrosoftNETWorkloadMonoToolChainPackageVersion)]" /> | ||
| <PackageDownload Include="Microsoft.NET.Workload.Mono.ToolChain.net9.Manifest-$(DotNetMonoManifestVersionBand)" Version="[$(MicrosoftNETWorkloadMonoToolChainPackageVersion)]" /> | ||
| <PackageDownload Include="Microsoft.NET.Workload.Mono.ToolChain.net10.Manifest-$(DotNetMonoManifestVersionBand)" Version="[$(MicrosoftNETWorkloadMonoToolChainPackageVersion)]" /> | ||
| <PackageDownload Include="Microsoft.NET.Workload.Emscripten.Current.Manifest-$(DotNetEmscriptenManifestVersionBand)" Version="[$(MicrosoftNETWorkloadEmscriptenPackageVersion)]" /> |
| <packageSources> | ||
| <clear /> | ||
| <add key="general-testing" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing/nuget/v3/index.json" /> | ||
| <!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.--> | ||
| <!-- Begin: Package sources from dotnet-dotnet --> |
| <PropertyGroup> | ||
| <MicrosoftNETSdkPackageVersion>11.0.100-preview.5.26268.112</MicrosoftNETSdkPackageVersion> | ||
| <MicrosoftNETSdkPackageVersion>11.0.100-preview.6.26310.106</MicrosoftNETSdkPackageVersion> | ||
| <MicrosoftDotnetSdkInternalPackageVersion>$(MicrosoftNETSdkPackageVersion)</MicrosoftDotnetSdkInternalPackageVersion> | ||
| <MicrosoftNETILLinkPackageVersion>11.0.0-preview.5.26268.112</MicrosoftNETILLinkPackageVersion> | ||
| <MicrosoftNETCoreAppRefPackageVersion>11.0.0-preview.5.26268.112</MicrosoftNETCoreAppRefPackageVersion> | ||
| <MicrosoftNETILLinkPackageVersion>11.0.0-preview.6.26310.106</MicrosoftNETILLinkPackageVersion> | ||
| <MicrosoftNETCoreAppRefPackageVersion>11.0.0-preview.6.26310.106</MicrosoftNETCoreAppRefPackageVersion> | ||
| <MicrosoftDotNetApiCompatPackageVersion>7.0.0-beta.22103.1</MicrosoftDotNetApiCompatPackageVersion> |
There was a problem hiding this comment.
Overall, I'd take a different approach to this one:
- Introduce the error you have here: dotnet/sdk#54713 (just temporarily put it in this workload to test)
- See how red CI is
- Remove tests & iterate until green
The on-device tests you removed here looks right.
But we also have a lot of MSBuild tests that parameterize on MonoVM/CoreCLR/NativeAOT that would need to run for CoreCLR/NativeAOT only.
Then we can remove the error you have in step 1 (that can come from dotnet/sdk)
| # MAUI Tests Stage | ||
| - stage: maui_tests | ||
| displayName: MAUI Tests | ||
| dependsOn: mac_build | ||
| condition: and(succeeded(), ne(variables['SkipTestStages'], 'true')) | ||
| jobs: |
There was a problem hiding this comment.
This stage tests the MAUI pipeline with our product, doesn't seem like that should be deleted?
Because it is a main <-> net11.0 build, it does break sometimes until changes land in dotnet/maui/net11.0, so that's ok if this is the case here.
| <Dependency Name="Microsoft.NET.Sdk" Version="11.0.100-preview.5.26268.112"> | ||
| <Dependency Name="Microsoft.NET.Sdk" Version="11.0.100-preview.6.26310.106"> | ||
| <Uri>https://github.com/dotnet/dotnet</Uri> |
There was a problem hiding this comment.
Why are we bumping .NET the same time?
| - name: RunMAUITestJob | ||
| value: true |
| @@ -82,14 +72,6 @@ protected override async Task<bool> Execute (Context context) | |||
| var dotnets = new [] { "net6", "net7", "net8", "net9", "net10", "current" }; | |||
| foreach (var dotnet in dotnets) { | |||
| var destination = Path.Combine (sdk_manifests, | |||
| context.Properties.GetRequiredValue (KnownProperties.DotNetMonoManifestVersionBand), | |||
| $"microsoft.net.workload.mono.toolchain.{dotnet}", | |||
| context.Properties.GetRequiredValue (KnownProperties.MicrosoftNETWorkloadMonoToolChainPackageVersion)); | |||
| Utilities.DeleteDirectory (destination, recurse: true); | |||
| foreach (var file in Directory.GetFiles (string.Format (Configurables.Paths.MicrosoftNETWorkloadMonoToolChainDir, dotnet), "*")) { | |||
| Utilities.CopyFileToDir (file, destination); | |||
| } | |||
| destination = Path.Combine (sdk_manifests, | |||
There was a problem hiding this comment.
I think you'll have to restore these for the src/native folder to be able to build.
| <!-- Parse NuGet.config --> | ||
| <XmlPeek | ||
| Condition=" '$(MauiUseLocalPacks)' == 'true' " | ||
| XmlInputPath="$(MauiSourcePath)\NuGet.config" | ||
| Query="/configuration/packageSources/add/@value"> | ||
| <Output TaskParameter="Result" ItemName="_NuGetSources" /> | ||
| </XmlPeek> | ||
| <XmlPeek | ||
| XmlInputPath="$(XamarinAndroidSourcePath)NuGet.config" | ||
| Query="/configuration/packageSources/add/@value"> | ||
| <Output TaskParameter="Result" ItemName="_NuGetSources" /> | ||
| </XmlPeek> | ||
|
|
||
| <!-- dotnet workload install maui-android --> | ||
| <ItemGroup> | ||
| <_NuGetSources Condition=" '$(MauiUseLocalPacks)' == 'true' " Include="$(MauiPackagePath.TrimEnd('\'))" /> | ||
| <_InstallArguments Include="--skip-manifest-update" /> | ||
| <_InstallArguments Include="--skip-sign-check" /> | ||
| <_InstallArguments Include="--verbosity diag" /> | ||
| <_InstallArguments Include="--source "%(_NuGetSources.Identity)"" /> | ||
| <_InstallArguments Include="--temp-dir "$(_TempDirectory)"" /> | ||
| </ItemGroup> | ||
| <Exec | ||
| Command=""$(DotNetPreviewTool)" workload install $(MauiWorkloadToInstall) @(_InstallArguments, ' ')" | ||
| WorkingDirectory="$(_TempDirectory)" | ||
| EnvironmentVariables="DOTNET_MULTILEVEL_LOOKUP=0" | ||
| /> |
There was a problem hiding this comment.
This is a target we use to install MAUI on top of a local build -- we shouldn't remove it.
Description
Remove the Mono mobile test legs from build-tools, and drop the Microsoft.NET.Workload.Mono.Toolchain manifest dependency from eng/Version.Details.xml and eng/Versions.props.
Validation pipelines (must pass): dotnet-android (devdiv pipeline 12278) PR build.
Validation pins (temporary): pinned to .NET 11 test build 11.0.100-preview.6.26310.106 (AzDO dotnet-unified-build run 2996804, BAR 318158, source dotnet/dotnet@8d5d82abe13, branch dev/update-sdk-mobile-stage2) and the public general-testing NuGet feed, so CI exercises the SDK with the Mono mobile workloads and RIDs removed.
TODO before merge: revert the global.json / Version.Details.xml / Versions.props pins and the NuGet.config feed back to the official VMR versions and the main feed.