From 942204c6919078ede367494e89248c5759680e80 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sat, 27 Jun 2026 02:01:53 +0000 Subject: [PATCH 1/6] Update dependencies from https://github.com/dotnet/dotnet build 20260625.25 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Feed From Version 11.0.0-beta.26322.111 -> To Version 11.0.0-beta.26325.125 Microsoft.DotNet.Cecil From Version 0.11.5-preview.26322.111 -> To Version 0.11.5-preview.26325.125 Microsoft.NET.ILLink , Microsoft.NETCore.App.Ref From Version 11.0.0-preview.6.26322.111 -> To Version 11.0.0-preview.6.26325.125 Microsoft.NET.Sdk , Microsoft.TemplateEngine.Authoring.Tasks From Version 11.0.100-preview.6.26322.111 -> To Version 11.0.100-preview.6.26325.125 --- eng/Version.Details.xml | 28 ++++++++++++++-------------- eng/Versions.props | 12 ++++++------ global.json | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d00d9a5861e..9e64b14039a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,20 +1,20 @@ - + https://github.com/dotnet/dotnet - d8addc1562ad98c7cab19ed654e9caabd1112d87 + a512c3ad43185e96fc2c2769a4f02af689e3fb99 - + https://github.com/dotnet/dotnet - d8addc1562ad98c7cab19ed654e9caabd1112d87 + a512c3ad43185e96fc2c2769a4f02af689e3fb99 - + https://github.com/dotnet/dotnet - d8addc1562ad98c7cab19ed654e9caabd1112d87 + a512c3ad43185e96fc2c2769a4f02af689e3fb99 - + https://github.com/dotnet/dotnet - d8addc1562ad98c7cab19ed654e9caabd1112d87 + a512c3ad43185e96fc2c2769a4f02af689e3fb99 https://github.com/dotnet/dotnet @@ -36,17 +36,17 @@ - + https://github.com/dotnet/dotnet - d8addc1562ad98c7cab19ed654e9caabd1112d87 + a512c3ad43185e96fc2c2769a4f02af689e3fb99 - + https://github.com/dotnet/dotnet - d8addc1562ad98c7cab19ed654e9caabd1112d87 + a512c3ad43185e96fc2c2769a4f02af689e3fb99 - + https://github.com/dotnet/dotnet - d8addc1562ad98c7cab19ed654e9caabd1112d87 + a512c3ad43185e96fc2c2769a4f02af689e3fb99 https://github.com/microsoft/testfx diff --git a/eng/Versions.props b/eng/Versions.props index da9a1241b94..1c2f5a880f9 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,20 +1,20 @@ - 11.0.100-preview.6.26322.111 + 11.0.100-preview.6.26325.125 $(MicrosoftNETSdkPackageVersion) - 11.0.0-preview.6.26322.111 - 11.0.0-preview.6.26322.111 + 11.0.0-preview.6.26325.125 + 11.0.0-preview.6.26325.125 7.0.0-beta.22103.1 11.0.0-beta.26060.102 - 11.0.0-beta.26322.111 + 11.0.0-beta.26325.125 11.0.100-preview.4.26215.121 11.0.100-preview.4.26215.121 $(MicrosoftNETWorkloadMonoToolChainCurrentManifest110100preview4PackageVersion) $(MicrosoftNETWorkloadEmscriptenCurrentManifest110100preview4PackageVersion) - 11.0.100-preview.6.26322.111 - 0.11.5-preview.26322.111 + 11.0.100-preview.6.26325.125 + 0.11.5-preview.26325.125 4.3.0-preview.26321.1 10.0.9 11.0.0-preview.1.26104.118 diff --git a/global.json b/global.json index c96ed83ffba..c7eb2e8cf7c 100644 --- a/global.json +++ b/global.json @@ -4,6 +4,6 @@ }, "msbuild-sdks": { "Microsoft.Build.NoTargets": "3.7.134", - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26322.111" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26325.125" } } From 4beb6ec4861b5511daba606981664a4cdccbd862 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sun, 28 Jun 2026 02:02:05 +0000 Subject: [PATCH 2/6] Update dependencies from https://github.com/dotnet/dotnet build 20260626.22 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Feed From Version 11.0.0-beta.26322.111 -> To Version 11.0.0-beta.26326.122 Microsoft.DotNet.Cecil From Version 0.11.5-preview.26322.111 -> To Version 0.11.5-preview.26326.122 Microsoft.NET.ILLink , Microsoft.NETCore.App.Ref From Version 11.0.0-preview.6.26322.111 -> To Version 11.0.0-preview.6.26326.122 Microsoft.NET.Sdk , Microsoft.TemplateEngine.Authoring.Tasks From Version 11.0.100-preview.6.26322.111 -> To Version 11.0.100-preview.6.26326.122 --- eng/Version.Details.xml | 28 ++++++++++++++-------------- eng/Versions.props | 12 ++++++------ global.json | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9e64b14039a..7856794d48c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,20 +1,20 @@ - + https://github.com/dotnet/dotnet - a512c3ad43185e96fc2c2769a4f02af689e3fb99 + 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 - + https://github.com/dotnet/dotnet - a512c3ad43185e96fc2c2769a4f02af689e3fb99 + 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 - + https://github.com/dotnet/dotnet - a512c3ad43185e96fc2c2769a4f02af689e3fb99 + 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 - + https://github.com/dotnet/dotnet - a512c3ad43185e96fc2c2769a4f02af689e3fb99 + 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 https://github.com/dotnet/dotnet @@ -36,17 +36,17 @@ - + https://github.com/dotnet/dotnet - a512c3ad43185e96fc2c2769a4f02af689e3fb99 + 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 - + https://github.com/dotnet/dotnet - a512c3ad43185e96fc2c2769a4f02af689e3fb99 + 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 - + https://github.com/dotnet/dotnet - a512c3ad43185e96fc2c2769a4f02af689e3fb99 + 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 https://github.com/microsoft/testfx diff --git a/eng/Versions.props b/eng/Versions.props index 1c2f5a880f9..9a55c4ece82 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,20 +1,20 @@ - 11.0.100-preview.6.26325.125 + 11.0.100-preview.6.26326.122 $(MicrosoftNETSdkPackageVersion) - 11.0.0-preview.6.26325.125 - 11.0.0-preview.6.26325.125 + 11.0.0-preview.6.26326.122 + 11.0.0-preview.6.26326.122 7.0.0-beta.22103.1 11.0.0-beta.26060.102 - 11.0.0-beta.26325.125 + 11.0.0-beta.26326.122 11.0.100-preview.4.26215.121 11.0.100-preview.4.26215.121 $(MicrosoftNETWorkloadMonoToolChainCurrentManifest110100preview4PackageVersion) $(MicrosoftNETWorkloadEmscriptenCurrentManifest110100preview4PackageVersion) - 11.0.100-preview.6.26325.125 - 0.11.5-preview.26325.125 + 11.0.100-preview.6.26326.122 + 0.11.5-preview.26326.122 4.3.0-preview.26321.1 10.0.9 11.0.0-preview.1.26104.118 diff --git a/global.json b/global.json index c7eb2e8cf7c..32cc8535b98 100644 --- a/global.json +++ b/global.json @@ -4,6 +4,6 @@ }, "msbuild-sdks": { "Microsoft.Build.NoTargets": "3.7.134", - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26325.125" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26326.122" } } From 289379f4a430619492f3a11d99e523ca65338e19 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 29 Jun 2026 02:01:21 +0000 Subject: [PATCH 3/6] Update dependencies from https://github.com/dotnet/dotnet build 20260628.6 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Feed From Version 11.0.0-beta.26322.111 -> To Version 11.0.0-beta.26328.106 Microsoft.DotNet.Cecil From Version 0.11.5-preview.26322.111 -> To Version 0.11.5-preview.26328.106 Microsoft.NET.ILLink , Microsoft.NETCore.App.Ref From Version 11.0.0-preview.6.26322.111 -> To Version 11.0.0-preview.6.26328.106 Microsoft.NET.Sdk , Microsoft.TemplateEngine.Authoring.Tasks From Version 11.0.100-preview.6.26322.111 -> To Version 11.0.100-preview.6.26328.106 --- eng/Version.Details.xml | 28 ++++++++++++++-------------- eng/Versions.props | 12 ++++++------ global.json | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7856794d48c..d1adb5229cf 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,20 +1,20 @@ - + https://github.com/dotnet/dotnet - 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 + 4e63ed688b0db806aa962c318a237b22aa069435 - + https://github.com/dotnet/dotnet - 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 + 4e63ed688b0db806aa962c318a237b22aa069435 - + https://github.com/dotnet/dotnet - 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 + 4e63ed688b0db806aa962c318a237b22aa069435 - + https://github.com/dotnet/dotnet - 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 + 4e63ed688b0db806aa962c318a237b22aa069435 https://github.com/dotnet/dotnet @@ -36,17 +36,17 @@ - + https://github.com/dotnet/dotnet - 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 + 4e63ed688b0db806aa962c318a237b22aa069435 - + https://github.com/dotnet/dotnet - 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 + 4e63ed688b0db806aa962c318a237b22aa069435 - + https://github.com/dotnet/dotnet - 1bff05b756db35ded2fbb17fb8f2934ac81e1b74 + 4e63ed688b0db806aa962c318a237b22aa069435 https://github.com/microsoft/testfx diff --git a/eng/Versions.props b/eng/Versions.props index 9a55c4ece82..92c4f9f0446 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,20 +1,20 @@ - 11.0.100-preview.6.26326.122 + 11.0.100-preview.6.26328.106 $(MicrosoftNETSdkPackageVersion) - 11.0.0-preview.6.26326.122 - 11.0.0-preview.6.26326.122 + 11.0.0-preview.6.26328.106 + 11.0.0-preview.6.26328.106 7.0.0-beta.22103.1 11.0.0-beta.26060.102 - 11.0.0-beta.26326.122 + 11.0.0-beta.26328.106 11.0.100-preview.4.26215.121 11.0.100-preview.4.26215.121 $(MicrosoftNETWorkloadMonoToolChainCurrentManifest110100preview4PackageVersion) $(MicrosoftNETWorkloadEmscriptenCurrentManifest110100preview4PackageVersion) - 11.0.100-preview.6.26326.122 - 0.11.5-preview.26326.122 + 11.0.100-preview.6.26328.106 + 0.11.5-preview.26328.106 4.3.0-preview.26321.1 10.0.9 11.0.0-preview.1.26104.118 diff --git a/global.json b/global.json index 32cc8535b98..16c25b342d5 100644 --- a/global.json +++ b/global.json @@ -4,6 +4,6 @@ }, "msbuild-sdks": { "Microsoft.Build.NoTargets": "3.7.134", - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26326.122" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26328.106" } } From eeeae9da13d87af8a2d7142f8d04eb0bc866d27c Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Thu, 25 Jun 2026 14:44:40 -0500 Subject: [PATCH 4/6] [tests] Skip MonoVM in BuildInDesignTimeMode The `BuildInDesignTimeMode` test still used `[Values] AndroidRuntime runtime`, which enumerates all enum members including `MonoVM`. On .NET 11+, the Mono runtime is not supported and `_CheckForUnsupportedMonoMobileRuntime` raises NETSDK1242 during restore, so `BuildInDesignTimeMode(False,MonoVM)` and `BuildInDesignTimeMode(True,MonoVM)` fail. Restrict the parameter to `CoreCLR` and `NativeAOT` to match the rest of the test suite per 440bc33c50f92dd3e0d36bb3dfcc6b100d0eb967. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Tests/Xamarin.Android.Build.Tests/BuildTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs index 0bce8de3328..2d449e73fc1 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs @@ -762,7 +762,7 @@ public void BuildAfterUpgradingNuget ([Values (AndroidRuntime.CoreCLR, AndroidRu public void BuildInDesignTimeMode ( [Values (false, true)] bool useManagedParser, - [Values] + [Values (AndroidRuntime.CoreCLR, AndroidRuntime.NativeAOT)] AndroidRuntime runtime ) { From 4fa079c70571dcba5332bd0c40cb2e0d2c52c367 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Fri, 26 Jun 2026 10:53:15 -0500 Subject: [PATCH 5/6] [ci] Strip all conditional nodes from MAUI test csproj The MAUI Integration lane creates a project from `dotnet new maui` and rewrites its `` to `net*-android` before building. The current MAUI template declares three `` nodes: net11.0-android ...ios;...maccatalyst ...windows10.0.19041.0 `SelectSingleNode` only matched the first node, so the iOS / maccatalyst / Windows TFMs were still appended to $(TargetFrameworks). NuGet restore evaluates *every* TFM in the project even when `dotnet build -f` restricts the build, so on .NET 11+ the iOS leg fails with: error NETSDK1242: Building iOS projects with the Mono runtime is not supported in .NET 11.0 and later. Switch to `SelectNodes` and drop the extras, then pin the remaining node to Android only. Validate the rewrite succeeded instead of silently no-oping when no node is found. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build-tools/automation/azure-pipelines-public.yaml | 14 ++++++++++++-- build-tools/automation/azure-pipelines.yaml | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/build-tools/automation/azure-pipelines-public.yaml b/build-tools/automation/azure-pipelines-public.yaml index f0b9c75fdf4..d51cbd6dc82 100644 --- a/build-tools/automation/azure-pipelines-public.yaml +++ b/build-tools/automation/azure-pipelines-public.yaml @@ -556,8 +556,18 @@ stages: - powershell: | $project = '$(Build.StagingDirectory)/MauiTestProj/MauiTestProj.csproj' [xml] $xml = Get-Content $project - $node = $xml.SelectSingleNode('/Project/PropertyGroup/TargetFrameworks') - $node.InnerText = '$(DotNetTargetFramework)-android' + $nodes = @($xml.SelectNodes('/Project/PropertyGroup/TargetFrameworks')) + if ($nodes.Count -eq 0) { throw "No node found in $project" } + # The MAUI template defines additional conditional nodes + # (iOS/maccatalyst on non-Linux, Windows on Windows). NuGet restore evaluates + # *all* of these — even when `dotnet build -f net*-android` is used — so any + # remaining iOS/maccatalyst TFM fails with NETSDK1242 on .NET 11+. + # Remove the extras and pin the first node to Android only. + for ($i = $nodes.Count - 1; $i -ge 1; $i--) { + $nodes[$i].ParentNode.RemoveChild($nodes[$i]) | Out-Null + } + if ($nodes[0].HasAttribute('Condition')) { $nodes[0].RemoveAttribute('Condition') } + $nodes[0].InnerText = '$(DotNetTargetFramework)-android' $xml.Save($project) displayName: set TargetFrameworks to Android-only diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml index 9f4bdd1eddd..1415e4d4936 100644 --- a/build-tools/automation/azure-pipelines.yaml +++ b/build-tools/automation/azure-pipelines.yaml @@ -192,8 +192,18 @@ extends: - powershell: | $project = '$(Build.StagingDirectory)/MauiTestProj/MauiTestProj.csproj' [xml] $xml = Get-Content $project - $node = $xml.SelectSingleNode('/Project/PropertyGroup/TargetFrameworks') - $node.InnerText = '$(DotNetTargetFramework)-android' + $nodes = @($xml.SelectNodes('/Project/PropertyGroup/TargetFrameworks')) + if ($nodes.Count -eq 0) { throw "No node found in $project" } + # The MAUI template defines additional conditional nodes + # (iOS/maccatalyst on non-Linux, Windows on Windows). NuGet restore evaluates + # *all* of these — even when `dotnet build -f net*-android` is used — so any + # remaining iOS/maccatalyst TFM fails with NETSDK1242 on .NET 11+. + # Remove the extras and pin the first node to Android only. + for ($i = $nodes.Count - 1; $i -ge 1; $i--) { + $nodes[$i].ParentNode.RemoveChild($nodes[$i]) | Out-Null + } + if ($nodes[0].HasAttribute('Condition')) { $nodes[0].RemoveAttribute('Condition') } + $nodes[0].InnerText = '$(DotNetTargetFramework)-android' $xml.Save($project) displayName: set TargetFrameworks to Android-only From eb70515420d01904a18f9375c154b6fb41b7e1b6 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Fri, 26 Jun 2026 10:56:15 -0500 Subject: [PATCH 6/6] [ci] Move MAUI TargetFrameworks rewrite into a shared template Extract the duplicated PowerShell into build-tools/automation/yaml-templates/set-maui-target-framework-android.yaml and consume it from both the internal and public pipelines. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../automation/azure-pipelines-public.yaml | 20 +++---------------- build-tools/automation/azure-pipelines.yaml | 20 +++---------------- .../set-maui-target-framework-android.yaml | 17 ++++++++++++++++ 3 files changed, 23 insertions(+), 34 deletions(-) create mode 100644 build-tools/automation/yaml-templates/set-maui-target-framework-android.yaml diff --git a/build-tools/automation/azure-pipelines-public.yaml b/build-tools/automation/azure-pipelines-public.yaml index d51cbd6dc82..57b4eeab796 100644 --- a/build-tools/automation/azure-pipelines-public.yaml +++ b/build-tools/automation/azure-pipelines-public.yaml @@ -553,23 +553,9 @@ stages: displayName: Create MAUI template continueOnError: false - - powershell: | - $project = '$(Build.StagingDirectory)/MauiTestProj/MauiTestProj.csproj' - [xml] $xml = Get-Content $project - $nodes = @($xml.SelectNodes('/Project/PropertyGroup/TargetFrameworks')) - if ($nodes.Count -eq 0) { throw "No node found in $project" } - # The MAUI template defines additional conditional nodes - # (iOS/maccatalyst on non-Linux, Windows on Windows). NuGet restore evaluates - # *all* of these — even when `dotnet build -f net*-android` is used — so any - # remaining iOS/maccatalyst TFM fails with NETSDK1242 on .NET 11+. - # Remove the extras and pin the first node to Android only. - for ($i = $nodes.Count - 1; $i -ge 1; $i--) { - $nodes[$i].ParentNode.RemoveChild($nodes[$i]) | Out-Null - } - if ($nodes[0].HasAttribute('Condition')) { $nodes[0].RemoveAttribute('Condition') } - $nodes[0].InnerText = '$(DotNetTargetFramework)-android' - $xml.Save($project) - displayName: set TargetFrameworks to Android-only + - template: /build-tools/automation/yaml-templates/set-maui-target-framework-android.yaml + parameters: + project: $(Build.StagingDirectory)/MauiTestProj/MauiTestProj.csproj - template: /build-tools/automation/yaml-templates/run-dotnet-preview.yaml parameters: diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml index 1415e4d4936..838d197661f 100644 --- a/build-tools/automation/azure-pipelines.yaml +++ b/build-tools/automation/azure-pipelines.yaml @@ -189,23 +189,9 @@ extends: displayName: Create MAUI template continueOnError: false - - powershell: | - $project = '$(Build.StagingDirectory)/MauiTestProj/MauiTestProj.csproj' - [xml] $xml = Get-Content $project - $nodes = @($xml.SelectNodes('/Project/PropertyGroup/TargetFrameworks')) - if ($nodes.Count -eq 0) { throw "No node found in $project" } - # The MAUI template defines additional conditional nodes - # (iOS/maccatalyst on non-Linux, Windows on Windows). NuGet restore evaluates - # *all* of these — even when `dotnet build -f net*-android` is used — so any - # remaining iOS/maccatalyst TFM fails with NETSDK1242 on .NET 11+. - # Remove the extras and pin the first node to Android only. - for ($i = $nodes.Count - 1; $i -ge 1; $i--) { - $nodes[$i].ParentNode.RemoveChild($nodes[$i]) | Out-Null - } - if ($nodes[0].HasAttribute('Condition')) { $nodes[0].RemoveAttribute('Condition') } - $nodes[0].InnerText = '$(DotNetTargetFramework)-android' - $xml.Save($project) - displayName: set TargetFrameworks to Android-only + - template: /build-tools/automation/yaml-templates/set-maui-target-framework-android.yaml@self + parameters: + project: $(Build.StagingDirectory)/MauiTestProj/MauiTestProj.csproj - template: /build-tools/automation/yaml-templates/run-dotnet-preview.yaml@self parameters: diff --git a/build-tools/automation/yaml-templates/set-maui-target-framework-android.yaml b/build-tools/automation/yaml-templates/set-maui-target-framework-android.yaml new file mode 100644 index 00000000000..cb059774d13 --- /dev/null +++ b/build-tools/automation/yaml-templates/set-maui-target-framework-android.yaml @@ -0,0 +1,17 @@ +parameters: + project: + +steps: +- powershell: | + $project = '${{ parameters.project }}' + [xml] $xml = Get-Content $project + # The MAUI template has multiple conditional nodes; keep only one. + $nodes = @($xml.SelectNodes('/Project/PropertyGroup/TargetFrameworks')) + if ($nodes.Count -eq 0) { throw "No node found in $project" } + for ($i = $nodes.Count - 1; $i -ge 1; $i--) { + $nodes[$i].ParentNode.RemoveChild($nodes[$i]) | Out-Null + } + if ($nodes[0].HasAttribute('Condition')) { $nodes[0].RemoveAttribute('Condition') } + $nodes[0].InnerText = '$(DotNetTargetFramework)-android' + $xml.Save($project) + displayName: set TargetFrameworks to Android-only