From 2954a33bf1ed4941b992e21739d24ec275c9aefa Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 3 Nov 2025 17:36:45 +0100 Subject: [PATCH 01/36] Add Maui iOS CoreCLR scenario benchmarks to the performance job pipeline --- eng/pipelines/sdk-perf-jobs.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/eng/pipelines/sdk-perf-jobs.yml b/eng/pipelines/sdk-perf-jobs.yml index bd92ce6f6ec..fde76658c95 100644 --- a/eng/pipelines/sdk-perf-jobs.yml +++ b/eng/pipelines/sdk-perf-jobs.yml @@ -507,6 +507,24 @@ jobs: ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} + # Maui iOS CoreCLR scenario benchmarks + - 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: + - main + runtimeFlavor: coreclr + codeGenType: Interpreter + additionalJobIdentifier: CoreCLR + ${{ each parameter in parameters.jobParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + # Maui iOS Native AOT scenario benchmarks - template: /eng/pipelines/templates/build-machine-matrix.yml parameters: From b1da2d7d44199b8833abb98b02cccaffba9cb8b2 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 28 Nov 2025 16:07:54 +0100 Subject: [PATCH 02/36] Add UseMonoRuntime property --- eng/performance/maui_scenarios_ios.proj | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index d6fc88576b7..f5f032e52c6 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -11,7 +11,10 @@ $(CorrelationPayloadDirectory)$(PreparePayloadOutDirectoryName)\ $(CorrelationPayloadDirectory)$(PreparePayloadOutDirectoryName)/ - --nativeaot true + --nativeaot true + + <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'mono'">/p:UseMonoRuntime=true + <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr'">/p:UseMonoRuntime=false From 06ae6b05c34866a43224706ef22a0ed4994d832e Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 2 Dec 2025 18:34:24 +0100 Subject: [PATCH 03/36] Don't run pip libraries --- scripts/run_performance_job.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run_performance_job.py b/scripts/run_performance_job.py index 774ed901986..ebda855ddbc 100644 --- a/scripts/run_performance_job.py +++ b/scripts/run_performance_job.py @@ -1007,7 +1007,7 @@ def publish_dotnet_app_to_payload(payload_dir_name: str, csproj_path: str, self_ os.environ["CodegenType"] = args.codegen_type or '' # TODO: See if these commands are needed for linux as they were being called before but were failing. - if args.os_group == "windows" or args.os_group == "osx": + if args.os_group == "windows" or (args.os_group == "osx" and args.run_kind not in ["maui_scenarios_ios", "maui_scenarios_android"]): RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--upgrade", "pip"]).run() RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "urllib3==1.26.19"]).run() RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "requests"]).run() From 1a30450a4c8d36370c0bbf0bbab213d38563d9ac Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 2 Dec 2025 18:35:24 +0100 Subject: [PATCH 04/36] Try install_versioned_maui --- src/scenarios/mauiandroid/pre.py | 4 ++-- src/scenarios/mauiblazorandroid/pre.py | 4 ++-- src/scenarios/mauiblazorios/pre.py | 4 ++-- src/scenarios/mauiios/pre.py | 4 ++-- src/scenarios/mauisamplecontentandroid/pre.py | 4 ++-- src/scenarios/netandroid/pre.py | 4 ++-- src/scenarios/netios/pre.py | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/scenarios/mauiandroid/pre.py b/src/scenarios/mauiandroid/pre.py index 8b438a7f99b..f07b16f7969 100644 --- a/src/scenarios/mauiandroid/pre.py +++ b/src/scenarios/mauiandroid/pre.py @@ -5,7 +5,7 @@ import sys from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_latest_maui +from shared.mauisharedpython import remove_aab_files, install_versioned_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME @@ -16,7 +16,7 @@ precommands = PreCommands() -install_latest_maui(precommands) +install_versioned_maui(precommands) precommands.print_dotnet_info() # Setup the Maui folder diff --git a/src/scenarios/mauiblazorandroid/pre.py b/src/scenarios/mauiblazorandroid/pre.py index cce988310b3..f6b0e43381e 100644 --- a/src/scenarios/mauiblazorandroid/pre.py +++ b/src/scenarios/mauiblazorandroid/pre.py @@ -5,7 +5,7 @@ import sys from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_latest_maui +from shared.mauisharedpython import remove_aab_files, install_versioned_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME @@ -16,7 +16,7 @@ precommands = PreCommands() -install_latest_maui(precommands) +install_versioned_maui(precommands) precommands.print_dotnet_info() # Setup the Maui folder diff --git a/src/scenarios/mauiblazorios/pre.py b/src/scenarios/mauiblazorios/pre.py index dd1f6554ac9..186a49f4dc4 100644 --- a/src/scenarios/mauiblazorios/pre.py +++ b/src/scenarios/mauiblazorios/pre.py @@ -5,14 +5,14 @@ import sys from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_latest_maui +from shared.mauisharedpython import remove_aab_files, install_versioned_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME setup_loggers(True) precommands = PreCommands() -install_latest_maui(precommands) +install_versioned_maui(precommands) precommands.print_dotnet_info() # Setup the Maui folder diff --git a/src/scenarios/mauiios/pre.py b/src/scenarios/mauiios/pre.py index b3a6a9efc28..480729fd7de 100644 --- a/src/scenarios/mauiios/pre.py +++ b/src/scenarios/mauiios/pre.py @@ -6,7 +6,7 @@ import subprocess from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_latest_maui +from shared.mauisharedpython import remove_aab_files, install_versioned_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME @@ -14,7 +14,7 @@ setup_loggers(True) precommands = PreCommands() -install_latest_maui(precommands) +install_versioned_maui(precommands) precommands.print_dotnet_info() # Setup the Maui folder diff --git a/src/scenarios/mauisamplecontentandroid/pre.py b/src/scenarios/mauisamplecontentandroid/pre.py index 1724fc95ea8..ea403d5a6cc 100644 --- a/src/scenarios/mauisamplecontentandroid/pre.py +++ b/src/scenarios/mauisamplecontentandroid/pre.py @@ -5,7 +5,7 @@ import sys from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_latest_maui +from shared.mauisharedpython import remove_aab_files, install_versioned_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME @@ -16,7 +16,7 @@ precommands = PreCommands() -install_latest_maui(precommands) +install_versioned_maui(precommands) precommands.print_dotnet_info() # Setup the Maui folder diff --git a/src/scenarios/netandroid/pre.py b/src/scenarios/netandroid/pre.py index c2f4c78f0d1..52211c1b3ee 100644 --- a/src/scenarios/netandroid/pre.py +++ b/src/scenarios/netandroid/pre.py @@ -5,7 +5,7 @@ import sys from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files,install_latest_maui +from shared.mauisharedpython import remove_aab_files, install_versioned_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME @@ -16,7 +16,7 @@ precommands = PreCommands() -install_latest_maui(precommands) +install_versioned_maui(precommands) precommands.print_dotnet_info() # Setup the app folder diff --git a/src/scenarios/netios/pre.py b/src/scenarios/netios/pre.py index 06b07c86c67..8dcad33e22f 100644 --- a/src/scenarios/netios/pre.py +++ b/src/scenarios/netios/pre.py @@ -5,7 +5,7 @@ import sys from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_latest_maui +from shared.mauisharedpython import remove_aab_files, install_versioned_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME @@ -13,7 +13,7 @@ setup_loggers(True) precommands = PreCommands() -install_latest_maui(precommands) +install_versioned_maui(precommands) precommands.print_dotnet_info() # Setup the .NET iOS folder From 980ff4b6edab10cbcb840b98e96b2fd0bffb61b5 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 2 Dec 2025 18:48:27 +0100 Subject: [PATCH 05/36] Fix NuGet.config path --- src/scenarios/shared/mauisharedpython.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/scenarios/shared/mauisharedpython.py b/src/scenarios/shared/mauisharedpython.py index 3fa76fced32..aa78e516d3d 100644 --- a/src/scenarios/shared/mauisharedpython.py +++ b/src/scenarios/shared/mauisharedpython.py @@ -83,12 +83,10 @@ def dump_dict_to_json_file(dump_dict: dict[str, str], file_name: str): def install_versioned_maui(precommands: PreCommands): target_framework_wo_platform = precommands.framework.split('-')[0] - # Download what we need - with open("MauiNuGet.config", "wb") as f: - with urllib.request.urlopen(f'https://raw.githubusercontent.com/dotnet/maui/{target_framework_wo_platform}/NuGet.config') as response: - f.write(response.read()) + # Use the repo's NuGet.config which has the darc feeds containing the pinned package versions + repo_nuget_config = os.path.join(get_repo_root_path(), "NuGet.config") - workload_install_args = ['--configfile', 'MauiNuGet.config', '--skip-sign-check'] + workload_install_args = ['--configfile', repo_nuget_config, '--skip-sign-check'] if int(target_framework_wo_platform.split('.')[0][3:]) > 8: # Use the rollback file for versions greater than 8 (should be set to only run for versions where we also use a specific dotnet version from the yml) rollback_dict = generate_maui_rollback_dict() dump_dict_to_json_file(rollback_dict, f"rollback_{target_framework_wo_platform}.json") From b9f4bdcd7939109a7e1b1ff2463acc150e1773c6 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 2 Dec 2025 18:52:46 +0100 Subject: [PATCH 06/36] Revert changes --- src/scenarios/mauiandroid/pre.py | 4 ++-- src/scenarios/mauiblazorandroid/pre.py | 4 ++-- src/scenarios/mauiblazorios/pre.py | 4 ++-- src/scenarios/mauiios/pre.py | 4 ++-- src/scenarios/mauisamplecontentandroid/pre.py | 4 ++-- src/scenarios/netandroid/pre.py | 4 ++-- src/scenarios/netios/pre.py | 4 ++-- src/scenarios/shared/mauisharedpython.py | 8 +++++--- 8 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/scenarios/mauiandroid/pre.py b/src/scenarios/mauiandroid/pre.py index f07b16f7969..8b438a7f99b 100644 --- a/src/scenarios/mauiandroid/pre.py +++ b/src/scenarios/mauiandroid/pre.py @@ -5,7 +5,7 @@ import sys from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_versioned_maui +from shared.mauisharedpython import remove_aab_files, install_latest_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME @@ -16,7 +16,7 @@ precommands = PreCommands() -install_versioned_maui(precommands) +install_latest_maui(precommands) precommands.print_dotnet_info() # Setup the Maui folder diff --git a/src/scenarios/mauiblazorandroid/pre.py b/src/scenarios/mauiblazorandroid/pre.py index f6b0e43381e..cce988310b3 100644 --- a/src/scenarios/mauiblazorandroid/pre.py +++ b/src/scenarios/mauiblazorandroid/pre.py @@ -5,7 +5,7 @@ import sys from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_versioned_maui +from shared.mauisharedpython import remove_aab_files, install_latest_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME @@ -16,7 +16,7 @@ precommands = PreCommands() -install_versioned_maui(precommands) +install_latest_maui(precommands) precommands.print_dotnet_info() # Setup the Maui folder diff --git a/src/scenarios/mauiblazorios/pre.py b/src/scenarios/mauiblazorios/pre.py index 186a49f4dc4..dd1f6554ac9 100644 --- a/src/scenarios/mauiblazorios/pre.py +++ b/src/scenarios/mauiblazorios/pre.py @@ -5,14 +5,14 @@ import sys from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_versioned_maui +from shared.mauisharedpython import remove_aab_files, install_latest_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME setup_loggers(True) precommands = PreCommands() -install_versioned_maui(precommands) +install_latest_maui(precommands) precommands.print_dotnet_info() # Setup the Maui folder diff --git a/src/scenarios/mauiios/pre.py b/src/scenarios/mauiios/pre.py index 480729fd7de..b3a6a9efc28 100644 --- a/src/scenarios/mauiios/pre.py +++ b/src/scenarios/mauiios/pre.py @@ -6,7 +6,7 @@ import subprocess from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_versioned_maui +from shared.mauisharedpython import remove_aab_files, install_latest_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME @@ -14,7 +14,7 @@ setup_loggers(True) precommands = PreCommands() -install_versioned_maui(precommands) +install_latest_maui(precommands) precommands.print_dotnet_info() # Setup the Maui folder diff --git a/src/scenarios/mauisamplecontentandroid/pre.py b/src/scenarios/mauisamplecontentandroid/pre.py index ea403d5a6cc..1724fc95ea8 100644 --- a/src/scenarios/mauisamplecontentandroid/pre.py +++ b/src/scenarios/mauisamplecontentandroid/pre.py @@ -5,7 +5,7 @@ import sys from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_versioned_maui +from shared.mauisharedpython import remove_aab_files, install_latest_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME @@ -16,7 +16,7 @@ precommands = PreCommands() -install_versioned_maui(precommands) +install_latest_maui(precommands) precommands.print_dotnet_info() # Setup the Maui folder diff --git a/src/scenarios/netandroid/pre.py b/src/scenarios/netandroid/pre.py index 52211c1b3ee..c2f4c78f0d1 100644 --- a/src/scenarios/netandroid/pre.py +++ b/src/scenarios/netandroid/pre.py @@ -5,7 +5,7 @@ import sys from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_versioned_maui +from shared.mauisharedpython import remove_aab_files,install_latest_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME @@ -16,7 +16,7 @@ precommands = PreCommands() -install_versioned_maui(precommands) +install_latest_maui(precommands) precommands.print_dotnet_info() # Setup the app folder diff --git a/src/scenarios/netios/pre.py b/src/scenarios/netios/pre.py index 8dcad33e22f..06b07c86c67 100644 --- a/src/scenarios/netios/pre.py +++ b/src/scenarios/netios/pre.py @@ -5,7 +5,7 @@ import sys from performance.logger import setup_loggers, getLogger from shared import const -from shared.mauisharedpython import remove_aab_files, install_versioned_maui +from shared.mauisharedpython import remove_aab_files, install_latest_maui from shared.precommands import PreCommands from shared.versionmanager import versions_write_json, get_sdk_versions from test import EXENAME @@ -13,7 +13,7 @@ setup_loggers(True) precommands = PreCommands() -install_versioned_maui(precommands) +install_latest_maui(precommands) precommands.print_dotnet_info() # Setup the .NET iOS folder diff --git a/src/scenarios/shared/mauisharedpython.py b/src/scenarios/shared/mauisharedpython.py index aa78e516d3d..3fa76fced32 100644 --- a/src/scenarios/shared/mauisharedpython.py +++ b/src/scenarios/shared/mauisharedpython.py @@ -83,10 +83,12 @@ def dump_dict_to_json_file(dump_dict: dict[str, str], file_name: str): def install_versioned_maui(precommands: PreCommands): target_framework_wo_platform = precommands.framework.split('-')[0] - # Use the repo's NuGet.config which has the darc feeds containing the pinned package versions - repo_nuget_config = os.path.join(get_repo_root_path(), "NuGet.config") + # Download what we need + with open("MauiNuGet.config", "wb") as f: + with urllib.request.urlopen(f'https://raw.githubusercontent.com/dotnet/maui/{target_framework_wo_platform}/NuGet.config') as response: + f.write(response.read()) - workload_install_args = ['--configfile', repo_nuget_config, '--skip-sign-check'] + workload_install_args = ['--configfile', 'MauiNuGet.config', '--skip-sign-check'] if int(target_framework_wo_platform.split('.')[0][3:]) > 8: # Use the rollback file for versions greater than 8 (should be set to only run for versions where we also use a specific dotnet version from the yml) rollback_dict = generate_maui_rollback_dict() dump_dict_to_json_file(rollback_dict, f"rollback_{target_framework_wo_platform}.json") From 7ffbbb756940d7a544c46b0586d0c23d5028231c Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 10 Dec 2025 13:38:49 +0100 Subject: [PATCH 07/36] Revert changes --- scripts/run_performance_job.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run_performance_job.py b/scripts/run_performance_job.py index ebda855ddbc..774ed901986 100644 --- a/scripts/run_performance_job.py +++ b/scripts/run_performance_job.py @@ -1007,7 +1007,7 @@ def publish_dotnet_app_to_payload(payload_dir_name: str, csproj_path: str, self_ os.environ["CodegenType"] = args.codegen_type or '' # TODO: See if these commands are needed for linux as they were being called before but were failing. - if args.os_group == "windows" or (args.os_group == "osx" and args.run_kind not in ["maui_scenarios_ios", "maui_scenarios_android"]): + if args.os_group == "windows" or args.os_group == "osx": RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--upgrade", "pip"]).run() RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "urllib3==1.26.19"]).run() RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "requests"]).run() From e138be4677f7b4d42ec517b63c8b800ecab31901 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 10 Dec 2025 13:42:06 +0100 Subject: [PATCH 08/36] Test pip install --- scripts/run_performance_job.py | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/scripts/run_performance_job.py b/scripts/run_performance_job.py index 774ed901986..afe0b332112 100644 --- a/scripts/run_performance_job.py +++ b/scripts/run_performance_job.py @@ -1008,9 +1008,32 @@ def publish_dotnet_app_to_payload(payload_dir_name: str, csproj_path: str, self_ # TODO: See if these commands are needed for linux as they were being called before but were failing. if args.os_group == "windows" or args.os_group == "osx": - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--upgrade", "pip"]).run() - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "urllib3==1.26.19"]).run() - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "requests"]).run() + # Check if pip exists and if --user flag is supported + pip_exists = False + user_flag_supported = False + + try: + RunCommand([*(agent_python.split(" ")), "-m", "pip", "--version"]).run() + pip_exists = True + except CalledProcessError: + getLogger().warning("pip is not available") + + if pip_exists: + # Check if --user flag is supported by doing a dry-run + try: + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--dry-run", "pip"]).run() + user_flag_supported = True + except CalledProcessError: + getLogger().warning("--user flag is not supported in this environment") + + if user_flag_supported: + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--upgrade", "pip"]).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "urllib3==1.26.19"]).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "requests"]).run() + else: + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--upgrade", "pip"]).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "urllib3==1.26.19"]).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "requests"]).run() scenarios_path = os.path.join(args.performance_repo_dir, "src", "scenarios") script_path = os.path.join(args.performance_repo_dir, "scripts") From 820b784963d2078437c2e0bc94e03b8dd76ab757 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 15 Dec 2025 18:08:02 +0100 Subject: [PATCH 09/36] Update SDK version resolution logic --- scripts/channel_map.py | 5 +++++ scripts/dotnet.py | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/channel_map.py b/scripts/channel_map.py index 68c5ab634be..0ca011576d5 100644 --- a/scripts/channel_map.py +++ b/scripts/channel_map.py @@ -22,6 +22,11 @@ class ChannelMap(): 'branch': '10.0', 'quality': 'daily' }, + 'nativeaot11.0': { + 'tfm': 'nativeaot11.0', + 'branch': '11.0', + 'quality': 'daily' + }, '9.0': { 'tfm': 'net9.0', 'branch': '9.0', diff --git a/scripts/dotnet.py b/scripts/dotnet.py index 5e4874fe886..fae7c6a2143 100755 --- a/scripts/dotnet.py +++ b/scripts/dotnet.py @@ -578,8 +578,9 @@ def get_dotnet_version_from_path( sdk = next((f for f in sdks if f.startswith( "{}.{}".format(version.major, version.minor + 1))), None) if not sdk: - if version.major == 9: - sdk = next((f for f in sdks if f.startswith("10.0")), None) + # Attempt 3: Try to use SDK with major version + 1 (e.g., net9.0 -> SDK 10.0, net10.0 -> SDK 11.0). + sdk = next((f for f in sdks if f.startswith( + "{}.{}".format(version.major + 1, version.minor))), None) if not sdk: sdk = next((f for f in sdks if f.startswith( "{}.{}".format('6', '0'))), None) From 553baf26637d0afa7426e1986f4eacef5323976a Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 15 Dec 2025 19:15:05 +0100 Subject: [PATCH 10/36] Add verbose flag to pip command --- scripts/run_performance_job.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/run_performance_job.py b/scripts/run_performance_job.py index b536ba175dc..f4caea5ec2e 100644 --- a/scripts/run_performance_job.py +++ b/scripts/run_performance_job.py @@ -1015,7 +1015,7 @@ def publish_dotnet_app_to_payload(payload_dir_name: str, csproj_path: str, self_ user_flag_supported = False try: - RunCommand([*(agent_python.split(" ")), "-m", "pip", "--version"]).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "--version"], verbose=True).run() pip_exists = True except CalledProcessError: getLogger().warning("pip is not available") @@ -1023,19 +1023,19 @@ def publish_dotnet_app_to_payload(payload_dir_name: str, csproj_path: str, self_ if pip_exists: # Check if --user flag is supported by doing a dry-run try: - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--dry-run", "pip"]).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--dry-run", "pip"], verbose=True).run() user_flag_supported = True except CalledProcessError: getLogger().warning("--user flag is not supported in this environment") if user_flag_supported: - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--upgrade", "pip"]).run() - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "urllib3==1.26.19"]).run() - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "requests"]).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--upgrade", "pip"], verbose=True).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "urllib3==1.26.19"], verbose=True).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "requests"], verbose=True).run() else: - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--upgrade", "pip"]).run() - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "urllib3==1.26.19"]).run() - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "requests"]).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--upgrade", "pip"], verbose=True).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "urllib3==1.26.19"], verbose=True).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "requests"], verbose=True).run() scenarios_path = os.path.join(args.performance_repo_dir, "src", "scenarios") script_path = os.path.join(args.performance_repo_dir, "scripts") From 3d304abcaef555b83c70214a5e1e5d12c893cfa8 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 15 Dec 2025 19:30:50 +0100 Subject: [PATCH 11/36] Add support for externally-managed environments in pip installation --- scripts/run_performance_job.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/scripts/run_performance_job.py b/scripts/run_performance_job.py index f4caea5ec2e..7d3156e702c 100644 --- a/scripts/run_performance_job.py +++ b/scripts/run_performance_job.py @@ -1033,9 +1033,12 @@ def publish_dotnet_app_to_payload(payload_dir_name: str, csproj_path: str, self_ RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "urllib3==1.26.19"], verbose=True).run() RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "requests"], verbose=True).run() else: - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--upgrade", "pip"], verbose=True).run() - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "urllib3==1.26.19"], verbose=True).run() - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "requests"], verbose=True).run() + # Externally-managed environment (PEP 668) - use --break-system-packages flag + # This is needed for Homebrew Python on macOS + getLogger().info("Using --break-system-packages flag for externally-managed environment") + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--break-system-packages", "--upgrade", "pip"], verbose=True).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--break-system-packages", "urllib3==1.26.19"], verbose=True).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--break-system-packages", "requests"], verbose=True).run() scenarios_path = os.path.join(args.performance_repo_dir, "src", "scenarios") script_path = os.path.join(args.performance_repo_dir, "scripts") From 9776ccfe57a4e2e4efac5f466307a903c9033c29 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 15 Dec 2025 21:03:09 +0100 Subject: [PATCH 12/36] Update Xcode version in MAUI iOS scenario command --- eng/performance/maui_scenarios_ios.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index f5f032e52c6..d2c4db1b397 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -51,7 +51,7 @@ - sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + sudo ln -sf /Applications/Xcode_26.0.1.app /Applications/Xcode_26.1.app; sudo xcode-select -s /Applications/Xcode_26.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) From 2aedb16fba2074aeba2c4c1a3c3f701e58a79c34 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 15 Dec 2025 21:13:24 +0100 Subject: [PATCH 13/36] Update Xcode version in MAUI iOS scenario command --- eng/performance/maui_scenarios_ios.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index d2c4db1b397..7f393c585a4 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -51,7 +51,7 @@ - sudo ln -sf /Applications/Xcode_26.0.1.app /Applications/Xcode_26.1.app; sudo xcode-select -s /Applications/Xcode_26.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + sudo mv /Applications/Xcode_26.0.1.app /Applications/Xcode_26.1.app; sudo xcode-select -s /Applications/Xcode_26.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) From 515e18b5241e4c2880331905b2a4ea75beabd1cd Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 15 Dec 2025 21:59:43 +0100 Subject: [PATCH 14/36] Refactor pip installation commands for externally-managed environments --- eng/performance/maui_scenarios_ios.proj | 2 +- scripts/run_performance_job.py | 33 +++---------------------- 2 files changed, 5 insertions(+), 30 deletions(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index 7f393c585a4..f5f032e52c6 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -51,7 +51,7 @@ - sudo mv /Applications/Xcode_26.0.1.app /Applications/Xcode_26.1.app; sudo xcode-select -s /Applications/Xcode_26.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) diff --git a/scripts/run_performance_job.py b/scripts/run_performance_job.py index 7d3156e702c..51742d3e898 100644 --- a/scripts/run_performance_job.py +++ b/scripts/run_performance_job.py @@ -1010,35 +1010,10 @@ def publish_dotnet_app_to_payload(payload_dir_name: str, csproj_path: str, self_ # TODO: See if these commands are needed for linux as they were being called before but were failing. if args.os_group == "windows" or args.os_group == "osx": - # Check if pip exists and if --user flag is supported - pip_exists = False - user_flag_supported = False - - try: - RunCommand([*(agent_python.split(" ")), "-m", "pip", "--version"], verbose=True).run() - pip_exists = True - except CalledProcessError: - getLogger().warning("pip is not available") - - if pip_exists: - # Check if --user flag is supported by doing a dry-run - try: - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--dry-run", "pip"], verbose=True).run() - user_flag_supported = True - except CalledProcessError: - getLogger().warning("--user flag is not supported in this environment") - - if user_flag_supported: - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "--upgrade", "pip"], verbose=True).run() - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "urllib3==1.26.19"], verbose=True).run() - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--user", "requests"], verbose=True).run() - else: - # Externally-managed environment (PEP 668) - use --break-system-packages flag - # This is needed for Homebrew Python on macOS - getLogger().info("Using --break-system-packages flag for externally-managed environment") - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--break-system-packages", "--upgrade", "pip"], verbose=True).run() - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--break-system-packages", "urllib3==1.26.19"], verbose=True).run() - RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", "--break-system-packages", "requests"], verbose=True).run() + break_system_packages = ["--break-system-packages"] if args.os_group == "osx" else [] + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", *break_system_packages, "--user", "--upgrade", "pip"]).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", *break_system_packages, "--user", "urllib3==1.26.19"]).run() + RunCommand([*(agent_python.split(" ")), "-m", "pip", "install", *break_system_packages, "--user", "requests"]).run() scenarios_path = os.path.join(args.performance_repo_dir, "src", "scenarios") script_path = os.path.join(args.performance_repo_dir, "scripts") From 823719355ffc20ba41ecd9c6d70831d046f93dde Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 15 Dec 2025 22:09:42 +0100 Subject: [PATCH 15/36] Add option to skip Xcode version validation in MAUI iOS scenario command --- eng/performance/maui_scenarios_ios.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index f5f032e52c6..8e5596b873c 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -51,7 +51,7 @@ - sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 -p:ValidateXcodeVersion=false $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) From d23f0511e0607106206b73b96645ab33b2df6bba Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 15 Dec 2025 22:19:36 +0100 Subject: [PATCH 16/36] Add option to skip Xcode version validation in MAUI iOS scenario command --- eng/performance/maui_scenarios_ios.proj | 2 +- src/scenarios/mauiblazorios/pre.py | 2 +- src/scenarios/mauiios/pre.py | 2 +- src/scenarios/netios/pre.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index 8e5596b873c..f5f032e52c6 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -51,7 +51,7 @@ - sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 -p:ValidateXcodeVersion=false $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) diff --git a/src/scenarios/mauiblazorios/pre.py b/src/scenarios/mauiblazorios/pre.py index e1ae7f691f6..f8e94bb654b 100644 --- a/src/scenarios/mauiblazorios/pre.py +++ b/src/scenarios/mauiblazorios/pre.py @@ -44,7 +44,7 @@ ''') # Build the IPA - will use merged NuGet.config - precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauiblazortesting']) + precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauiblazortesting', '/p:ValidateXcodeVersion=false']) # NuGet.config is automatically restored after this block output_dir = const.PUBDIR diff --git a/src/scenarios/mauiios/pre.py b/src/scenarios/mauiios/pre.py index b8f4ee2254e..630a118b637 100644 --- a/src/scenarios/mauiios/pre.py +++ b/src/scenarios/mauiios/pre.py @@ -29,7 +29,7 @@ no_restore=False) # Build the IPA - will also use merged NuGet.config - precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauitesting']) + precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauitesting', '/p:ValidateXcodeVersion=false']) # NuGet.config is automatically restored after this block # Remove the aab files as we don't need them, this saves space diff --git a/src/scenarios/netios/pre.py b/src/scenarios/netios/pre.py index 06b07c86c67..cad3e220f48 100644 --- a/src/scenarios/netios/pre.py +++ b/src/scenarios/netios/pre.py @@ -25,7 +25,7 @@ no_restore=False) # Build the APK -precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.xamarintesting']) +precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.xamarintesting', '/p:ValidateXcodeVersion=false']) # Remove the aab files as we don't need them, this saves space output_dir = const.PUBDIR From 86a96fd3a2f4ba64c5aee60ef114c0bfcebbd528 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 15 Dec 2025 22:35:07 +0100 Subject: [PATCH 17/36] Add MSBuild arguments to MAUI iOS scenario command --- eng/performance/maui_scenarios_ios.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index f5f032e52c6..39ea67c7b4f 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -51,7 +51,7 @@ - sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --msbuild="$(_MSBuildArgs)" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) From a52dea874bb384321726dd727c344a0b1e35d99b Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 15 Dec 2025 22:52:13 +0100 Subject: [PATCH 18/36] Add verbose logging to MAUI iOS scenario command --- eng/performance/maui_scenarios_ios.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index 39ea67c7b4f..e2c6e0df6b1 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -51,7 +51,7 @@ - sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --msbuild="$(_MSBuildArgs)" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --msbuild="$(_MSBuildArgs);-v:diag" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) From e0701c56ec24cf0c1f988a0d722502747c07411a Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 16 Dec 2025 11:38:43 +0100 Subject: [PATCH 19/36] Update target framework version in ChannelMap to net10.0 --- scripts/channel_map.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/channel_map.py b/scripts/channel_map.py index 0ca011576d5..f23ecb24db6 100644 --- a/scripts/channel_map.py +++ b/scripts/channel_map.py @@ -3,7 +3,7 @@ class ChannelMap(): channel_map = { 'main': { - 'tfm': 'net11.0', + 'tfm': 'net10.0', 'branch': '11.0', 'quality': 'daily' }, From a9916f21ffdcc5477d531f59c6a549c5d18ad8dd Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 16 Dec 2025 11:47:57 +0100 Subject: [PATCH 20/36] Update target framework version --- eng/performance/maui_scenarios_ios.proj | 2 +- scripts/channel_map.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index e2c6e0df6b1..5429d31fc6d 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -51,7 +51,7 @@ - sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --msbuild="$(_MSBuildArgs);-v:diag" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f net10.0-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --msbuild="$(_MSBuildArgs);-v:diag" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) diff --git a/scripts/channel_map.py b/scripts/channel_map.py index f23ecb24db6..0ca011576d5 100644 --- a/scripts/channel_map.py +++ b/scripts/channel_map.py @@ -3,7 +3,7 @@ class ChannelMap(): channel_map = { 'main': { - 'tfm': 'net10.0', + 'tfm': 'net11.0', 'branch': '11.0', 'quality': 'daily' }, From 4ece98eb988082af1355cebe6d6a76c7696ee187 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 16 Dec 2025 12:12:03 +0100 Subject: [PATCH 21/36] Remove logging --- eng/performance/maui_scenarios_ios.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index 5429d31fc6d..e3fd6bcaf97 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -51,7 +51,7 @@ - sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f net10.0-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --msbuild="$(_MSBuildArgs);-v:diag" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f net10.0-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --msbuild="$(_MSBuildArgs)" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) From 55188675a81e1dd11cf38af879f34a4a3d282b87 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 16 Dec 2025 14:40:13 +0100 Subject: [PATCH 22/36] Update Apple mobile SDK versions to 26.1.10642-ci.net11-0 --- eng/Version.Details.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index cf4192f6629..efd42cf32c1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -76,21 +76,21 @@ https://github.com/dotnet/android 1dcfb6f8779c33b6f768c996495cb90ecd729329 - + https://github.com/dotnet/macios - 890175615f7762dfbc4f8555007aaf5bb4d75c8f + 6f58a2dc13fa2b4e3ec25eb78e7f7a3e9dc6c0c7 - + https://github.com/dotnet/macios - 890175615f7762dfbc4f8555007aaf5bb4d75c8f + 6f58a2dc13fa2b4e3ec25eb78e7f7a3e9dc6c0c7 - + https://github.com/dotnet/macios - 890175615f7762dfbc4f8555007aaf5bb4d75c8f + 6f58a2dc13fa2b4e3ec25eb78e7f7a3e9dc6c0c7 - + https://github.com/dotnet/macios - 890175615f7762dfbc4f8555007aaf5bb4d75c8f + 6f58a2dc13fa2b4e3ec25eb78e7f7a3e9dc6c0c7 From dc36defb0b1e906df4ee3d62dad711e9078b8006 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 16 Dec 2025 15:29:42 +0100 Subject: [PATCH 23/36] Fix target dependency --- eng/performance/maui_scenarios_ios.proj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index e3fd6bcaf97..047c8e419b1 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -17,9 +17,9 @@ <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr'">/p:UseMonoRuntime=false - + - + From 112cf7aefe59d955b6f348b5a59d3f72734c55e1 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 16 Dec 2025 15:42:32 +0100 Subject: [PATCH 24/36] Revert changes --- eng/performance/maui_scenarios_ios.proj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index 047c8e419b1..39ea67c7b4f 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -17,9 +17,9 @@ <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr'">/p:UseMonoRuntime=false - + - + @@ -51,7 +51,7 @@ - sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f net10.0-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --msbuild="$(_MSBuildArgs)" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --msbuild="$(_MSBuildArgs)" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) From bb4508ba118debf9f0b00cef7a2796a5ed8070dc Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 16 Dec 2025 16:39:37 +0100 Subject: [PATCH 25/36] Update MacCatalyst, macOS, iOS, and tvOS SDK versions to 26.1.10555-ci.net11-0 --- eng/Version.Details.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index efd42cf32c1..2069a61ac29 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -76,21 +76,21 @@ https://github.com/dotnet/android 1dcfb6f8779c33b6f768c996495cb90ecd729329 - + https://github.com/dotnet/macios - 6f58a2dc13fa2b4e3ec25eb78e7f7a3e9dc6c0c7 + 1ebe913b290f8d1bc0f770eb07fa98b199b61e8f - + https://github.com/dotnet/macios - 6f58a2dc13fa2b4e3ec25eb78e7f7a3e9dc6c0c7 + 1ebe913b290f8d1bc0f770eb07fa98b199b61e8f - + https://github.com/dotnet/macios - 6f58a2dc13fa2b4e3ec25eb78e7f7a3e9dc6c0c7 + 1ebe913b290f8d1bc0f770eb07fa98b199b61e8f - + https://github.com/dotnet/macios - 6f58a2dc13fa2b4e3ec25eb78e7f7a3e9dc6c0c7 + 1ebe913b290f8d1bc0f770eb07fa98b199b61e8f From f43963c85f7b4e6f329773eb1a40e85c0f9cee99 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 16 Dec 2025 17:09:09 +0100 Subject: [PATCH 26/36] Add TargetsCurrent=true --- src/scenarios/mauiblazorios/pre.py | 4 +++- src/scenarios/mauiios/pre.py | 4 +++- src/scenarios/netios/pre.py | 6 ++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/scenarios/mauiblazorios/pre.py b/src/scenarios/mauiblazorios/pre.py index f8e94bb654b..a5c635d4eb1 100644 --- a/src/scenarios/mauiblazorios/pre.py +++ b/src/scenarios/mauiblazorios/pre.py @@ -44,7 +44,9 @@ ''') # Build the IPA - will use merged NuGet.config - precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauiblazortesting', '/p:ValidateXcodeVersion=false']) + # Setting TargetsCurrent=true is necessary until we get https://github.com/dotnet/sdk/pull/52031 + # Ref: https://github.com/dotnet/macios/issues/24418 + precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauiblazortesting', '/p:ValidateXcodeVersion=false', '/p:TargetsCurrent=true']) # NuGet.config is automatically restored after this block output_dir = const.PUBDIR diff --git a/src/scenarios/mauiios/pre.py b/src/scenarios/mauiios/pre.py index 630a118b637..c5ba2152d82 100644 --- a/src/scenarios/mauiios/pre.py +++ b/src/scenarios/mauiios/pre.py @@ -29,7 +29,9 @@ no_restore=False) # Build the IPA - will also use merged NuGet.config - precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauitesting', '/p:ValidateXcodeVersion=false']) + # Setting TargetsCurrent=true is necessary until we get https://github.com/dotnet/sdk/pull/52031 + # Ref: https://github.com/dotnet/macios/issues/24418 + precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauitesting', '/p:ValidateXcodeVersion=false', '/p:TargetsCurrent=true']) # NuGet.config is automatically restored after this block # Remove the aab files as we don't need them, this saves space diff --git a/src/scenarios/netios/pre.py b/src/scenarios/netios/pre.py index cad3e220f48..17d3e9b0513 100644 --- a/src/scenarios/netios/pre.py +++ b/src/scenarios/netios/pre.py @@ -24,8 +24,10 @@ working_directory=sys.path[0], no_restore=False) -# Build the APK -precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.xamarintesting', '/p:ValidateXcodeVersion=false']) +# Build the IPA +# Setting TargetsCurrent=true is necessary until we get https://github.com/dotnet/sdk/pull/52031 +# Ref: https://github.com/dotnet/macios/issues/24418 +precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.xamarintesting', '/p:ValidateXcodeVersion=false', '/p:TargetsCurrent=true']) # Remove the aab files as we don't need them, this saves space output_dir = const.PUBDIR From a033c209346084b184dfaedd2f016adc71c28e45 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 16 Dec 2025 17:24:08 +0100 Subject: [PATCH 27/36] Set SupportedOSPlatformVersion to 26.0 to avoid iOS 26.1 API linking errors with Xcode 26.0 --- src/scenarios/mauiblazorios/pre.py | 3 ++- src/scenarios/mauiios/pre.py | 3 ++- src/scenarios/netios/pre.py | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/scenarios/mauiblazorios/pre.py b/src/scenarios/mauiblazorios/pre.py index a5c635d4eb1..c09e31affc0 100644 --- a/src/scenarios/mauiblazorios/pre.py +++ b/src/scenarios/mauiblazorios/pre.py @@ -46,7 +46,8 @@ # Build the IPA - will use merged NuGet.config # Setting TargetsCurrent=true is necessary until we get https://github.com/dotnet/sdk/pull/52031 # Ref: https://github.com/dotnet/macios/issues/24418 - precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauiblazortesting', '/p:ValidateXcodeVersion=false', '/p:TargetsCurrent=true']) + # Setting SupportedOSPlatformVersion=26.0 to avoid iOS 26.1 API linking errors with Xcode 26.0 + precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauiblazortesting', '/p:ValidateXcodeVersion=false', '/p:TargetsCurrent=true', '/p:SupportedOSPlatformVersion=26.0']) # NuGet.config is automatically restored after this block output_dir = const.PUBDIR diff --git a/src/scenarios/mauiios/pre.py b/src/scenarios/mauiios/pre.py index c5ba2152d82..7533de37da3 100644 --- a/src/scenarios/mauiios/pre.py +++ b/src/scenarios/mauiios/pre.py @@ -31,7 +31,8 @@ # Build the IPA - will also use merged NuGet.config # Setting TargetsCurrent=true is necessary until we get https://github.com/dotnet/sdk/pull/52031 # Ref: https://github.com/dotnet/macios/issues/24418 - precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauitesting', '/p:ValidateXcodeVersion=false', '/p:TargetsCurrent=true']) + # Setting SupportedOSPlatformVersion=26.0 to avoid iOS 26.1 API linking errors with Xcode 26.0 + precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauitesting', '/p:ValidateXcodeVersion=false', '/p:TargetsCurrent=true', '/p:SupportedOSPlatformVersion=26.0']) # NuGet.config is automatically restored after this block # Remove the aab files as we don't need them, this saves space diff --git a/src/scenarios/netios/pre.py b/src/scenarios/netios/pre.py index 17d3e9b0513..b5a65f86b57 100644 --- a/src/scenarios/netios/pre.py +++ b/src/scenarios/netios/pre.py @@ -27,7 +27,8 @@ # Build the IPA # Setting TargetsCurrent=true is necessary until we get https://github.com/dotnet/sdk/pull/52031 # Ref: https://github.com/dotnet/macios/issues/24418 -precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.xamarintesting', '/p:ValidateXcodeVersion=false', '/p:TargetsCurrent=true']) +# Setting SupportedOSPlatformVersion=26.0 to avoid iOS 26.1 API linking errors with Xcode 26.0 +precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.xamarintesting', '/p:ValidateXcodeVersion=false', '/p:TargetsCurrent=true', '/p:SupportedOSPlatformVersion=26.0']) # Remove the aab files as we don't need them, this saves space output_dir = const.PUBDIR From c9b515e46d93f2721372c6cd6e9b5f3e295a9882 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 16 Dec 2025 17:34:45 +0100 Subject: [PATCH 28/36] Remove SupportedOSPlatformVersion setting and update Xcode version in pre.py scripts --- eng/performance/maui_scenarios_ios.proj | 2 +- src/scenarios/mauiblazorios/pre.py | 6 +----- src/scenarios/mauiios/pre.py | 6 +----- src/scenarios/netios/pre.py | 6 +----- 4 files changed, 4 insertions(+), 16 deletions(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index 39ea67c7b4f..477465868a3 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -51,7 +51,7 @@ - sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --msbuild="$(_MSBuildArgs)" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) + sudo xcode-select -s /Applications/Xcode_26.1.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --msbuild="$(_MSBuildArgs)" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName) %(PreparePayloadWorkItem.PayloadDirectory) diff --git a/src/scenarios/mauiblazorios/pre.py b/src/scenarios/mauiblazorios/pre.py index c09e31affc0..95f81a9bced 100644 --- a/src/scenarios/mauiblazorios/pre.py +++ b/src/scenarios/mauiblazorios/pre.py @@ -43,11 +43,7 @@ } ''') - # Build the IPA - will use merged NuGet.config - # Setting TargetsCurrent=true is necessary until we get https://github.com/dotnet/sdk/pull/52031 - # Ref: https://github.com/dotnet/macios/issues/24418 - # Setting SupportedOSPlatformVersion=26.0 to avoid iOS 26.1 API linking errors with Xcode 26.0 - precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauiblazortesting', '/p:ValidateXcodeVersion=false', '/p:TargetsCurrent=true', '/p:SupportedOSPlatformVersion=26.0']) + precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauiblazortesting', '/p:TargetsCurrent=true']) # NuGet.config is automatically restored after this block output_dir = const.PUBDIR diff --git a/src/scenarios/mauiios/pre.py b/src/scenarios/mauiios/pre.py index 7533de37da3..04b9a089059 100644 --- a/src/scenarios/mauiios/pre.py +++ b/src/scenarios/mauiios/pre.py @@ -28,11 +28,7 @@ working_directory=sys.path[0], no_restore=False) - # Build the IPA - will also use merged NuGet.config - # Setting TargetsCurrent=true is necessary until we get https://github.com/dotnet/sdk/pull/52031 - # Ref: https://github.com/dotnet/macios/issues/24418 - # Setting SupportedOSPlatformVersion=26.0 to avoid iOS 26.1 API linking errors with Xcode 26.0 - precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauitesting', '/p:ValidateXcodeVersion=false', '/p:TargetsCurrent=true', '/p:SupportedOSPlatformVersion=26.0']) + precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauitesting', '/p:TargetsCurrent=true']) # NuGet.config is automatically restored after this block # Remove the aab files as we don't need them, this saves space diff --git a/src/scenarios/netios/pre.py b/src/scenarios/netios/pre.py index b5a65f86b57..dcd830861bc 100644 --- a/src/scenarios/netios/pre.py +++ b/src/scenarios/netios/pre.py @@ -24,11 +24,7 @@ working_directory=sys.path[0], no_restore=False) -# Build the IPA -# Setting TargetsCurrent=true is necessary until we get https://github.com/dotnet/sdk/pull/52031 -# Ref: https://github.com/dotnet/macios/issues/24418 -# Setting SupportedOSPlatformVersion=26.0 to avoid iOS 26.1 API linking errors with Xcode 26.0 -precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.xamarintesting', '/p:ValidateXcodeVersion=false', '/p:TargetsCurrent=true', '/p:SupportedOSPlatformVersion=26.0']) +precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.xamarintesting', '/p:TargetsCurrent=true']) # Remove the aab files as we don't need them, this saves space output_dir = const.PUBDIR From fd658219d654a5e0bd27888d0d9ad7d5ec373963 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 16 Dec 2025 18:04:55 +0100 Subject: [PATCH 29/36] Don't run MAUI templates --- eng/performance/maui_scenarios_ios.proj | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index 477465868a3..2a133c14d29 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -35,7 +35,8 @@ NetiOSDefault com.companyname.NetiOSDefault - + + From dcfbcf0ffb88947f1be584f5c90fd9b7526a5bea Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 16 Dec 2025 18:22:05 +0100 Subject: [PATCH 30/36] Comment out XHarnessAppBundleToTest for iOS Maui Default Template --- eng/performance/maui_scenarios_ios.proj | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/eng/performance/maui_scenarios_ios.proj b/eng/performance/maui_scenarios_ios.proj index 2a133c14d29..f25a998b0a5 100644 --- a/eng/performance/maui_scenarios_ios.proj +++ b/eng/performance/maui_scenarios_ios.proj @@ -98,7 +98,8 @@ ]]> - + + + + + <_MSBuildArgs Condition="'$(CodegenType)' == 'Interpreter'">$(_MSBuildArgs);/p:PublishReadyToRun=false + + <_MSBuildArgs Condition="'$(CodegenType)' == 'NativeAOT'">$(_MSBuildArgs);/p:PublishAot=true;/p:PublishAotUsingRuntimePack=true + @@ -35,7 +41,7 @@ NetiOSDefault com.companyname.NetiOSDefault - + + - <_MSBuildArgs Condition="'$(CodegenType)' == 'Interpreter'">$(_MSBuildArgs);/p:PublishReadyToRun=false + <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr' and '$(CodegenType)' == 'Interpreter'">$(_MSBuildArgs);/p:PublishReadyToRun=false - <_MSBuildArgs Condition="'$(CodegenType)' == 'NativeAOT'">$(_MSBuildArgs);/p:PublishAot=true;/p:PublishAotUsingRuntimePack=true + <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr' and '$(CodegenType)' == 'NativeAOT'">$(_MSBuildArgs);/p:PublishAot=true;/p:PublishAotUsingRuntimePack=true From 6e7b6e51516960cb28f7e87ebf7e7d57f0c2d9a8 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 17 Dec 2025 10:47:25 +0100 Subject: [PATCH 35/36] Add .NET 11 iOS SDK dependencies and update previous versions --- eng/Version.Details.xml | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2069a61ac29..2200bd59b1a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -76,6 +76,7 @@ https://github.com/dotnet/android 1dcfb6f8779c33b6f768c996495cb90ecd729329 + https://github.com/dotnet/macios 1ebe913b290f8d1bc0f770eb07fa98b199b61e8f @@ -92,21 +93,38 @@ https://github.com/dotnet/macios 1ebe913b290f8d1bc0f770eb07fa98b199b61e8f - + + + https://github.com/dotnet/macios + 890175615f7762dfbc4f8555007aaf5bb4d75c8f + + + https://github.com/dotnet/macios + 890175615f7762dfbc4f8555007aaf5bb4d75c8f + + + https://github.com/dotnet/macios + 890175615f7762dfbc4f8555007aaf5bb4d75c8f + + + https://github.com/dotnet/macios + 890175615f7762dfbc4f8555007aaf5bb4d75c8f + + - + https://github.com/dotnet/macios 4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3 - + https://github.com/dotnet/macios 4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3 - + https://github.com/dotnet/macios 4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3 - + https://github.com/dotnet/macios 4177c9d9590857cfb2617fd7a7ef3d5e1de48ed3 From 796bd3d5602f63447b48d4808419b2545a96c72a Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 18 Dec 2025 11:01:03 +0100 Subject: [PATCH 36/36] Fix ident --- src/scenarios/mauiios/pre.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/scenarios/mauiios/pre.py b/src/scenarios/mauiios/pre.py index 6521ccede00..5d012479b06 100644 --- a/src/scenarios/mauiios/pre.py +++ b/src/scenarios/mauiios/pre.py @@ -29,8 +29,8 @@ no_restore=False) # Build the IPA - will use merged NuGet.config - # TODO: Remove /p:TargetsCurrent=true once https://github.com/dotnet/performance/issues/5055 is resolved - precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauitesting', '/p:TargetsCurrent=true']) + # TODO: Remove /p:TargetsCurrent=true once https://github.com/dotnet/performance/issues/5055 is resolved + precommands.execute(['/p:EnableCodeSigning=false', '/p:ApplicationId=net.dot.mauitesting', '/p:TargetsCurrent=true']) # NuGet.config is automatically restored after this block # Remove the aab files as we don't need them, this saves space