From 8b5fe83cd6d342633242d88a8c9bb8f14830527d Mon Sep 17 00:00:00 2001 From: Matous Kozak Date: Wed, 5 Aug 2026 13:19:17 +0200 Subject: [PATCH 1/8] Add stable mobile SDK baseline runs Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 45e743a3-bcfc-4965-83b7-4e52eef7dbb5 --- eng/pipelines/sdk-perf-jobs.yml | 43 ++++++++++++++++++++++++ src/scenarios/shared/mauisharedpython.py | 27 +++++++++++++-- 2 files changed, 67 insertions(+), 3 deletions(-) diff --git a/eng/pipelines/sdk-perf-jobs.yml b/eng/pipelines/sdk-perf-jobs.yml index 2f646c41674..25fda1e7598 100644 --- a/eng/pipelines/sdk-perf-jobs.yml +++ b/eng/pipelines/sdk-perf-jobs.yml @@ -427,6 +427,28 @@ jobs: ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} + # Maui Android scenario benchmarks (SDK Default Baseline) - Release + - template: /eng/pipelines/templates/build-machine-matrix.yml + parameters: + jobTemplate: /eng/pipelines/templates/run-scenarios-job.yml + buildMachines: + - win-x64-android-arm64-pixel + - win-x64-android-arm64-galaxy + isPublic: false + jobParameters: + runKind: maui_scenarios_android + projectFileName: maui_scenarios_android.proj + channels: + - 10.0 + codeGenType: Default + buildConfig: Release + additionalJobIdentifier: Baseline + variables: + - name: MAUI_WORKLOAD_MODE + value: sdk-default + ${{ each parameter in parameters.jobParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + # Maui Android scenario benchmarks (CoreCLR Full R2R) - Release - template: /eng/pipelines/templates/build-machine-matrix.yml parameters: @@ -527,6 +549,27 @@ jobs: ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} + # Maui iOS scenario benchmarks (SDK Default Baseline) - Release + - template: /eng/pipelines/templates/build-machine-matrix.yml + parameters: + jobTemplate: /eng/pipelines/templates/run-scenarios-job.yml + buildMachines: + - osx-x64-ios-arm64 + isPublic: false + jobParameters: + runKind: maui_scenarios_ios + projectFileName: maui_scenarios_ios.proj + channels: + - 10.0 + codeGenType: Default + buildConfig: Release + additionalJobIdentifier: Baseline + variables: + - name: MAUI_WORKLOAD_MODE + value: sdk-default + ${{ each parameter in parameters.jobParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + # Maui iOS scenario benchmarks (CoreCLR NativeAOT) - Release - template: /eng/pipelines/templates/build-machine-matrix.yml parameters: diff --git a/src/scenarios/shared/mauisharedpython.py b/src/scenarios/shared/mauisharedpython.py index 51bacdba11f..ab7de8a645d 100644 --- a/src/scenarios/shared/mauisharedpython.py +++ b/src/scenarios/shared/mauisharedpython.py @@ -9,6 +9,11 @@ from shared.precommands import PreCommands from logging import getLogger +SDK_DEFAULT_WORKLOAD_MODE = "sdk-default" + +def use_sdk_default_workloads() -> bool: + return os.environ.get("MAUI_WORKLOAD_MODE", "").lower() == SDK_DEFAULT_WORKLOAD_MODE + # Remove the aab files as we don't need them, this saves space in the correlation payload def remove_aab_files(output_dir="."): file_list = os.listdir(output_dir) @@ -412,6 +417,7 @@ class MauiNuGetConfigContext: and dotnet/macios into the repo's NuGet.config. This is necessary because dotnet new doesn't support --configfile parameter. Finds NuGet.config relative to current working directory to support both local and CorrelationStaging scenarios. + The context is a no-op when MAUI_WORKLOAD_MODE is set to sdk-default. ''' # Repos whose NuGet.configs are merged into the repo config UPSTREAM_REPOS = ["dotnet/maui", "dotnet/android", "dotnet/macios"] @@ -419,6 +425,7 @@ class MauiNuGetConfigContext: def __init__(self, precommands: PreCommands): self.precommands = precommands self.target_framework = precommands.framework + self.use_sdk_default_workloads = use_sdk_default_workloads() # Find NuGet.config by walking up from current directory self.repo_nuget_config = self._find_repo_nuget_config() self.backup_path = self.repo_nuget_config + ".maui_backup" @@ -491,6 +498,10 @@ def _merge_sources_from_config(config_path: str, repo_sources: ET.Element, exist return added def __enter__(self): + if self.use_sdk_default_workloads: + getLogger().info("Using the selected SDK's default workload manifests and package sources") + return self + getLogger().info("Setting up NuGet.config merge (maui, android, macios)...") config_dir = os.path.dirname(self.repo_nuget_config) @@ -561,6 +572,9 @@ def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): + if self.use_sdk_default_workloads: + return False + getLogger().info("Restoring original NuGet.config...") # Restore the original NuGet.config @@ -586,8 +600,8 @@ def install_latest_maui( workload_name: str = 'maui' ): ''' - Install the latest MAUI workload using the provided feed. - Creates a rollback file and installs the workload using that file. + Install a MAUI workload using either the selected SDK's default manifests or + the latest packages from the provided feed. Args: precommands: PreCommands instance for running dotnet commands. @@ -600,12 +614,19 @@ def install_latest_maui( (e.g., 'maui', 'maui-android'). ''' - getLogger().info(f"########## Installing latest {workload_name} workload ##########") + use_sdk_defaults = use_sdk_default_workloads() + install_kind = "SDK-default" if use_sdk_defaults else "latest" + getLogger().info(f"########## Installing {install_kind} {workload_name} workload ##########") if precommands.has_workload: getLogger().info(f"Skipping {workload_name} installation due to --has-workload=true") return + if use_sdk_defaults: + precommands.install_workload(workload_name) + getLogger().info(f"########## Finished installing SDK-default {workload_name} workload ##########") + return + if feed is None: feed = extract_latest_dotnet_feed_from_nuget_config( path=os.path.join(get_repo_root_path(), "NuGet.config") From c6231e061f4a450ee672890a51bd752faf7ec9b3 Mon Sep 17 00:00:00 2001 From: Matous Kozak Date: Wed, 5 Aug 2026 14:54:10 +0200 Subject: [PATCH 2/8] Allow mobile SDK default runtime selection Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 45e743a3-bcfc-4965-83b7-4e52eef7dbb5 --- eng/pipelines/sdk-perf-jobs.yml | 4 ++-- scripts/run_performance_job.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/pipelines/sdk-perf-jobs.yml b/eng/pipelines/sdk-perf-jobs.yml index 25fda1e7598..422237c3142 100644 --- a/eng/pipelines/sdk-perf-jobs.yml +++ b/eng/pipelines/sdk-perf-jobs.yml @@ -440,9 +440,9 @@ jobs: projectFileName: maui_scenarios_android.proj channels: - 10.0 + runtimeFlavor: default codeGenType: Default buildConfig: Release - additionalJobIdentifier: Baseline variables: - name: MAUI_WORKLOAD_MODE value: sdk-default @@ -561,9 +561,9 @@ jobs: projectFileName: maui_scenarios_ios.proj channels: - 10.0 + runtimeFlavor: default codeGenType: Default buildConfig: Release - additionalJobIdentifier: Baseline variables: - name: MAUI_WORKLOAD_MODE value: sdk-default diff --git a/scripts/run_performance_job.py b/scripts/run_performance_job.py index 2f3aefc0161..51c989c3771 100644 --- a/scripts/run_performance_job.py +++ b/scripts/run_performance_job.py @@ -666,7 +666,7 @@ def get_run_configurations( # .NET Android and .NET MAUI Android sample app scenarios if run_kind in ["maui_scenarios_android", "maui_scenarios_android_innerloop"]: - if not runtime_flavor in ("mono", "coreclr"): + if not runtime_flavor in ("mono", "coreclr", "default"): raise Exception(f"Runtime flavor must be specified for {run_kind}") configurations["CodegenType"] = str(codegen_type) configurations["RuntimeType"] = str(runtime_flavor) @@ -675,7 +675,7 @@ def get_run_configurations( # .NET iOS and .NET MAUI iOS sample app scenarios if run_kind == "maui_scenarios_ios": - if not runtime_flavor in ("mono", "coreclr"): + if not runtime_flavor in ("mono", "coreclr", "default"): raise Exception("Runtime flavor must be specified for maui_scenarios_ios") configurations["CodegenType"] = str(codegen_type) configurations["RuntimeType"] = str(runtime_flavor) From dc39d62d805b0a78e6af5fc4979cb52f7d092526 Mon Sep 17 00:00:00 2001 From: Matous Kozak Date: Wed, 5 Aug 2026 14:55:07 +0200 Subject: [PATCH 3/8] Use Mono for .NET 10 mobile baseline Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 45e743a3-bcfc-4965-83b7-4e52eef7dbb5 --- eng/pipelines/sdk-perf-jobs.yml | 4 ++-- scripts/run_performance_job.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/pipelines/sdk-perf-jobs.yml b/eng/pipelines/sdk-perf-jobs.yml index 422237c3142..0139accbfd9 100644 --- a/eng/pipelines/sdk-perf-jobs.yml +++ b/eng/pipelines/sdk-perf-jobs.yml @@ -440,7 +440,7 @@ jobs: projectFileName: maui_scenarios_android.proj channels: - 10.0 - runtimeFlavor: default + runtimeFlavor: mono # Update to coreclr when the baseline moves to .NET 11. codeGenType: Default buildConfig: Release variables: @@ -561,7 +561,7 @@ jobs: projectFileName: maui_scenarios_ios.proj channels: - 10.0 - runtimeFlavor: default + runtimeFlavor: mono # Update to coreclr when the baseline moves to .NET 11. codeGenType: Default buildConfig: Release variables: diff --git a/scripts/run_performance_job.py b/scripts/run_performance_job.py index 51c989c3771..2f3aefc0161 100644 --- a/scripts/run_performance_job.py +++ b/scripts/run_performance_job.py @@ -666,7 +666,7 @@ def get_run_configurations( # .NET Android and .NET MAUI Android sample app scenarios if run_kind in ["maui_scenarios_android", "maui_scenarios_android_innerloop"]: - if not runtime_flavor in ("mono", "coreclr", "default"): + if not runtime_flavor in ("mono", "coreclr"): raise Exception(f"Runtime flavor must be specified for {run_kind}") configurations["CodegenType"] = str(codegen_type) configurations["RuntimeType"] = str(runtime_flavor) @@ -675,7 +675,7 @@ def get_run_configurations( # .NET iOS and .NET MAUI iOS sample app scenarios if run_kind == "maui_scenarios_ios": - if not runtime_flavor in ("mono", "coreclr", "default"): + if not runtime_flavor in ("mono", "coreclr"): raise Exception("Runtime flavor must be specified for maui_scenarios_ios") configurations["CodegenType"] = str(codegen_type) configurations["RuntimeType"] = str(runtime_flavor) From 134e1fa95069d0b44bde6608107e8c02e4a9851a Mon Sep 17 00:00:00 2001 From: Matous Kozak Date: Wed, 5 Aug 2026 16:33:03 +0200 Subject: [PATCH 4/8] Update .NET 10 Helix tooling pins Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 45e743a3-bcfc-4965-83b7-4e52eef7dbb5 --- global.net10.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/global.net10.json b/global.net10.json index 1d7aa9f4829..082aa62f222 100644 --- a/global.net10.json +++ b/global.net10.json @@ -8,8 +8,8 @@ "dotnet": "10.0.100" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25604.105", - "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25604.105" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25605.3", + "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25605.3" }, "native-tools": { "python3": "3.7.1" From 7ac29d28a47477a2bfd0bb5dfe5fe1209489f6e6 Mon Sep 17 00:00:00 2001 From: Matous Kozak Date: Wed, 5 Aug 2026 16:45:49 +0200 Subject: [PATCH 5/8] Use Xcode 26.0 for .NET 10 iOS scenarios Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 45e743a3-bcfc-4965-83b7-4e52eef7dbb5 --- eng/performance/maui_scenarios_ios.proj | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index 084344d6aa0..7f4d85d76e3 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -24,6 +24,9 @@ <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr' and '$(CodegenType)' == 'NativeAOT'">$(_MSBuildArgs);/p:PublishAot=true;/p:PublishAotUsingRuntimePack=true + <_XcodeVersionPattern Condition="'$(PERFLAB_Framework)' == 'net10.0'">Xcode_26.0*.app + <_XcodeVersionPattern Condition="'$(_XcodeVersionPattern)' == ''">Xcode_*.app + @@ -69,8 +72,8 @@ - - XCODE_PATH=`find /Applications -maxdepth 1 -type d -name 'Xcode_*.app' | sort -t_ -k2 -V | tail -1` && echo "Selected Xcode: $XCODE_PATH" && sudo xcode-select -s "$XCODE_PATH" && $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c $(BuildConfig) -r ios-arm64 --msbuild="$(_MSBuildArgs)" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName) && rm -rf app/obj app/bin && cd ../ && zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + + XCODE_PATH=`find /Applications -maxdepth 1 -type d -name '$(_XcodeVersionPattern)' | sort -t_ -k2 -V | tail -1` && echo "Selected Xcode: $XCODE_PATH" && sudo xcode-select -s "$XCODE_PATH" && $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c $(BuildConfig) -r ios-arm64 --msbuild="$(_MSBuildArgs)" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName) && rm -rf app/obj app/bin && cd ../ && zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) From b7058af031b8f03ec96669d0d11dff3f844f6965 Mon Sep 17 00:00:00 2001 From: Matous Kozak Date: Wed, 5 Aug 2026 17:14:57 +0200 Subject: [PATCH 6/8] Use latest stable .NET 10 mobile workload set Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 45e743a3-bcfc-4965-83b7-4e52eef7dbb5 --- eng/performance/maui_scenarios_ios.proj | 7 ++----- eng/pipelines/sdk-perf-jobs.yml | 8 ++++---- src/scenarios/shared/mauisharedpython.py | 26 +++++++++++------------- 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index 7f4d85d76e3..084344d6aa0 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -24,9 +24,6 @@ <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr' and '$(CodegenType)' == 'NativeAOT'">$(_MSBuildArgs);/p:PublishAot=true;/p:PublishAotUsingRuntimePack=true - <_XcodeVersionPattern Condition="'$(PERFLAB_Framework)' == 'net10.0'">Xcode_26.0*.app - <_XcodeVersionPattern Condition="'$(_XcodeVersionPattern)' == ''">Xcode_*.app - @@ -72,8 +69,8 @@ - - XCODE_PATH=`find /Applications -maxdepth 1 -type d -name '$(_XcodeVersionPattern)' | sort -t_ -k2 -V | tail -1` && echo "Selected Xcode: $XCODE_PATH" && sudo xcode-select -s "$XCODE_PATH" && $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c $(BuildConfig) -r ios-arm64 --msbuild="$(_MSBuildArgs)" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName) && rm -rf app/obj app/bin && cd ../ && zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + + XCODE_PATH=`find /Applications -maxdepth 1 -type d -name 'Xcode_*.app' | sort -t_ -k2 -V | tail -1` && echo "Selected Xcode: $XCODE_PATH" && sudo xcode-select -s "$XCODE_PATH" && $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c $(BuildConfig) -r ios-arm64 --msbuild="$(_MSBuildArgs)" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName) && rm -rf app/obj app/bin && cd ../ && zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) diff --git a/eng/pipelines/sdk-perf-jobs.yml b/eng/pipelines/sdk-perf-jobs.yml index 0139accbfd9..b5233011a94 100644 --- a/eng/pipelines/sdk-perf-jobs.yml +++ b/eng/pipelines/sdk-perf-jobs.yml @@ -444,8 +444,8 @@ jobs: codeGenType: Default buildConfig: Release variables: - - name: MAUI_WORKLOAD_MODE - value: sdk-default + - name: MAUI_WORKLOAD_VERSION + value: 10.0.302.1 ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} @@ -565,8 +565,8 @@ jobs: codeGenType: Default buildConfig: Release variables: - - name: MAUI_WORKLOAD_MODE - value: sdk-default + - name: MAUI_WORKLOAD_VERSION + value: 10.0.302.1 ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/scenarios/shared/mauisharedpython.py b/src/scenarios/shared/mauisharedpython.py index ab7de8a645d..71b09c7554a 100644 --- a/src/scenarios/shared/mauisharedpython.py +++ b/src/scenarios/shared/mauisharedpython.py @@ -9,10 +9,8 @@ from shared.precommands import PreCommands from logging import getLogger -SDK_DEFAULT_WORKLOAD_MODE = "sdk-default" - -def use_sdk_default_workloads() -> bool: - return os.environ.get("MAUI_WORKLOAD_MODE", "").lower() == SDK_DEFAULT_WORKLOAD_MODE +def get_maui_workload_version() -> Optional[str]: + return os.environ.get("MAUI_WORKLOAD_VERSION") or None # Remove the aab files as we don't need them, this saves space in the correlation payload def remove_aab_files(output_dir="."): @@ -417,7 +415,7 @@ class MauiNuGetConfigContext: and dotnet/macios into the repo's NuGet.config. This is necessary because dotnet new doesn't support --configfile parameter. Finds NuGet.config relative to current working directory to support both local and CorrelationStaging scenarios. - The context is a no-op when MAUI_WORKLOAD_MODE is set to sdk-default. + The context is a no-op when MAUI_WORKLOAD_VERSION selects a released workload set. ''' # Repos whose NuGet.configs are merged into the repo config UPSTREAM_REPOS = ["dotnet/maui", "dotnet/android", "dotnet/macios"] @@ -425,7 +423,7 @@ class MauiNuGetConfigContext: def __init__(self, precommands: PreCommands): self.precommands = precommands self.target_framework = precommands.framework - self.use_sdk_default_workloads = use_sdk_default_workloads() + self.maui_workload_version = get_maui_workload_version() # Find NuGet.config by walking up from current directory self.repo_nuget_config = self._find_repo_nuget_config() self.backup_path = self.repo_nuget_config + ".maui_backup" @@ -498,8 +496,8 @@ def _merge_sources_from_config(config_path: str, repo_sources: ET.Element, exist return added def __enter__(self): - if self.use_sdk_default_workloads: - getLogger().info("Using the selected SDK's default workload manifests and package sources") + if self.maui_workload_version: + getLogger().info(f"Using MAUI workload set {self.maui_workload_version}") return self getLogger().info("Setting up NuGet.config merge (maui, android, macios)...") @@ -572,7 +570,7 @@ def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): - if self.use_sdk_default_workloads: + if self.maui_workload_version: return False getLogger().info("Restoring original NuGet.config...") @@ -614,17 +612,17 @@ def install_latest_maui( (e.g., 'maui', 'maui-android'). ''' - use_sdk_defaults = use_sdk_default_workloads() - install_kind = "SDK-default" if use_sdk_defaults else "latest" + workload_version = get_maui_workload_version() + install_kind = f"workload set {workload_version}" if workload_version else "latest" getLogger().info(f"########## Installing {install_kind} {workload_name} workload ##########") if precommands.has_workload: getLogger().info(f"Skipping {workload_name} installation due to --has-workload=true") return - if use_sdk_defaults: - precommands.install_workload(workload_name) - getLogger().info(f"########## Finished installing SDK-default {workload_name} workload ##########") + if workload_version: + precommands.install_workload(workload_name, ['--version', workload_version]) + getLogger().info(f"########## Finished installing {workload_name} workload set {workload_version} ##########") return if feed is None: From 379237085b8ba7e41a5a62083615364f8f79d4f1 Mon Sep 17 00:00:00 2001 From: Matous Kozak Date: Wed, 5 Aug 2026 17:15:51 +0200 Subject: [PATCH 7/8] Resolve latest stable mobile workloads automatically Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 45e743a3-bcfc-4965-83b7-4e52eef7dbb5 --- eng/pipelines/sdk-perf-jobs.yml | 8 ++++---- src/scenarios/shared/mauisharedpython.py | 26 +++++++++++++----------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/eng/pipelines/sdk-perf-jobs.yml b/eng/pipelines/sdk-perf-jobs.yml index b5233011a94..d3fb0d8bb9d 100644 --- a/eng/pipelines/sdk-perf-jobs.yml +++ b/eng/pipelines/sdk-perf-jobs.yml @@ -444,8 +444,8 @@ jobs: codeGenType: Default buildConfig: Release variables: - - name: MAUI_WORKLOAD_VERSION - value: 10.0.302.1 + - name: MAUI_WORKLOAD_MODE + value: stable ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} @@ -565,8 +565,8 @@ jobs: codeGenType: Default buildConfig: Release variables: - - name: MAUI_WORKLOAD_VERSION - value: 10.0.302.1 + - name: MAUI_WORKLOAD_MODE + value: stable ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/scenarios/shared/mauisharedpython.py b/src/scenarios/shared/mauisharedpython.py index 71b09c7554a..f43ac960f00 100644 --- a/src/scenarios/shared/mauisharedpython.py +++ b/src/scenarios/shared/mauisharedpython.py @@ -9,8 +9,10 @@ from shared.precommands import PreCommands from logging import getLogger -def get_maui_workload_version() -> Optional[str]: - return os.environ.get("MAUI_WORKLOAD_VERSION") or None +STABLE_WORKLOAD_MODE = "stable" + +def use_stable_maui_workload() -> bool: + return os.environ.get("MAUI_WORKLOAD_MODE", "").lower() == STABLE_WORKLOAD_MODE # Remove the aab files as we don't need them, this saves space in the correlation payload def remove_aab_files(output_dir="."): @@ -415,7 +417,7 @@ class MauiNuGetConfigContext: and dotnet/macios into the repo's NuGet.config. This is necessary because dotnet new doesn't support --configfile parameter. Finds NuGet.config relative to current working directory to support both local and CorrelationStaging scenarios. - The context is a no-op when MAUI_WORKLOAD_VERSION selects a released workload set. + The context is a no-op when MAUI_WORKLOAD_MODE selects stable workloads. ''' # Repos whose NuGet.configs are merged into the repo config UPSTREAM_REPOS = ["dotnet/maui", "dotnet/android", "dotnet/macios"] @@ -423,7 +425,7 @@ class MauiNuGetConfigContext: def __init__(self, precommands: PreCommands): self.precommands = precommands self.target_framework = precommands.framework - self.maui_workload_version = get_maui_workload_version() + self.use_stable_maui_workload = use_stable_maui_workload() # Find NuGet.config by walking up from current directory self.repo_nuget_config = self._find_repo_nuget_config() self.backup_path = self.repo_nuget_config + ".maui_backup" @@ -496,8 +498,8 @@ def _merge_sources_from_config(config_path: str, repo_sources: ET.Element, exist return added def __enter__(self): - if self.maui_workload_version: - getLogger().info(f"Using MAUI workload set {self.maui_workload_version}") + if self.use_stable_maui_workload: + getLogger().info("Using the latest stable MAUI workload") return self getLogger().info("Setting up NuGet.config merge (maui, android, macios)...") @@ -570,7 +572,7 @@ def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): - if self.maui_workload_version: + if self.use_stable_maui_workload: return False getLogger().info("Restoring original NuGet.config...") @@ -612,17 +614,17 @@ def install_latest_maui( (e.g., 'maui', 'maui-android'). ''' - workload_version = get_maui_workload_version() - install_kind = f"workload set {workload_version}" if workload_version else "latest" + use_stable = use_stable_maui_workload() + install_kind = "latest stable" if use_stable else "latest" getLogger().info(f"########## Installing {install_kind} {workload_name} workload ##########") if precommands.has_workload: getLogger().info(f"Skipping {workload_name} installation due to --has-workload=true") return - if workload_version: - precommands.install_workload(workload_name, ['--version', workload_version]) - getLogger().info(f"########## Finished installing {workload_name} workload set {workload_version} ##########") + if use_stable: + precommands.install_workload(workload_name, []) + getLogger().info(f"########## Finished installing latest stable {workload_name} workload ##########") return if feed is None: From 761645ada2ff7e6beea7b1c293c88ecbe9e9c51c Mon Sep 17 00:00:00 2001 From: Matous Kozak Date: Thu, 6 Aug 2026 08:46:21 +0200 Subject: [PATCH 8/8] Update .NET 10 Arcade and Helix SDKs Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 45e743a3-bcfc-4965-83b7-4e52eef7dbb5 --- global.net10.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/global.net10.json b/global.net10.json index 082aa62f222..26a3d28914a 100644 --- a/global.net10.json +++ b/global.net10.json @@ -8,8 +8,8 @@ "dotnet": "10.0.100" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25605.3", - "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25605.3" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26376.103", + "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.26376.103" }, "native-tools": { "python3": "3.7.1"