Skip to content

Slow/exploding build times with new workload version 8078 #20848

@DDHSchmidt

Description

@DDHSchmidt

The build-pipeline for the iOS version of our MAUI app unexplicably exploded in terms of build times and output size this tuesday.
What took around 20 minutes on monday now takes 70-80 minutes and the outputted ipa grew from 60 MB to ca. 90 MB.
There were no changes/checkins to (NuGet)dependencies, *.csproj, *.props, etc. files that could/should affect the build process inbetween these dates. It's virtually the same solution now taking three times longer.
On closer inspection of the build logs, the most prominent changes seemed to be in the automatically installed workloads by the command dotnet workload install ios maui --source https://api.nuget.org/v3/index.json

Monday:

Installing workload manifest microsoft.net.sdk.android version 34.0.79...
Installing workload manifest microsoft.net.sdk.ios version 17.2.8022...
Installing workload manifest microsoft.net.sdk.maccatalyst version 17.2.8022...
Installing workload manifest microsoft.net.sdk.macos version 14.2.8022...
Installing workload manifest microsoft.net.sdk.maui version 8.0.61...
Installing workload manifest microsoft.net.sdk.tvos version 17.2.8022...
Installing workload manifest microsoft.net.workload.mono.toolchain.net7 version 8.0.0...
Installing workload manifest microsoft.net.workload.mono.toolchain.current version 8.0.0...
Installing workload manifest microsoft.net.workload.emscripten.net7 version 8.0.0...
Installing workload manifest microsoft.net.workload.emscripten.current version 8.0.0...

Tuesday:

Installing workload manifest microsoft.net.sdk.android version 34.0.113...
Installing workload manifest microsoft.net.sdk.ios version 17.2.8078...
Installing workload manifest microsoft.net.sdk.maccatalyst version 17.2.8078...
Installing workload manifest microsoft.net.sdk.macos version 14.2.8078...
Installing workload manifest microsoft.net.sdk.maui version 8.0.61...
Installing workload manifest microsoft.net.sdk.tvos version 17.2.8078...
Installing workload manifest microsoft.net.sdk.aspire version 8.0.2...

Adding an additional --from-rollback-file https://maui.blob.core.windows.net/metadata/rollbacks/8.0.61.json to the workload install command reverts to Monday's log output and decreases build time & output.

I'm sorry if I missed any announcements where new, drastical AOT changes were discussed, but the recent release notes only mention a "dedup optimization" which doesn't sound like something that should cause this situation, right?
Also: The linked PR mentions "FullAOT" mode, which we don't use. the relevant csproj-lines from our release-configuration are:

<MtouchExtraArgs>--optimize=-remove-dynamic-registrar</MtouchExtraArgs>
<MtouchEnableSGenConc>true</MtouchEnableSGenConc>
<MtouchInterpreter>-all,System.Private.Xml,System.Collections.Immutable</MtouchInterpreter>
<!-- System.Private.Xml is for our XSLT transformations that depend on reflection operations happening in that assembly -->
<!-- System.Collections.Immutable was chosen for an exception in CommunityToolKit's "toast" component: https://github.com/CommunityToolkit/Maui/Issues/1752 -->
<MtouchLink>SdkOnly</MtouchLink>

Steps to Reproduce

  1. Build a Maui project for iOS via CI (Sorry, can't really share our project here :/ )

Expected Behavior

The build takes a "reasonable" amount of time to finish

Actual Behavior

The build takes 3 times longer for no discernable reason

Environment

Runner Image
Image: macos-13
Version: 20240707.2
Included Software: https://github.com/actions/runner-images/blob/macos-13/20240707.2/images/macos/macos-13-Readme.md
Image Release: https://github.com/actions/runner-images/releases/tag/macos-13%2F20240707.2
Current image version: '20240707.2'

Build Logs

msbuild_workload_17.2.8022_redacted.binlog.zip

msbuild_workload_17.2.8078_redacted.binlog.zip

Example Project (If Possible)

Sorry, not possible I'm afraid, but I will reveal as much config/code you need, that I can.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions