diff --git a/src/Controls/src/Build.Tasks/nuget/buildTransitive/netstandard2.0/Microsoft.Maui.Controls.targets b/src/Controls/src/Build.Tasks/nuget/buildTransitive/netstandard2.0/Microsoft.Maui.Controls.targets
index 0059c276f1a6..a20e03bd99a0 100644
--- a/src/Controls/src/Build.Tasks/nuget/buildTransitive/netstandard2.0/Microsoft.Maui.Controls.targets
+++ b/src/Controls/src/Build.Tasks/nuget/buildTransitive/netstandard2.0/Microsoft.Maui.Controls.targets
@@ -47,6 +47,25 @@
+
+
+ false
+ $(PublishReadyToRunCrossgen2ExtraArgs);--partial
+ <_MauiUseDefaultReadyToRunPgoFiles Condition="'$(_MauiUseDefaultReadyToRunPgoFiles)' == ''">true
+
+
+
+
+ <_ReadyToRunPgoFiles Condition="'$(_MauiUseDefaultReadyToRunPgoFiles)' == 'true'" Include="$(MSBuildThisFileDirectory)mibc\android\**\*.mibc" />
+
+
<_MauiTargetsImportedAgain Condition="'$(_MauiTargetsImported)'=='True'">True
diff --git a/src/Controls/tests/Xaml.UnitTests/MSBuild/MSBuildTests.cs b/src/Controls/tests/Xaml.UnitTests/MSBuild/MSBuildTests.cs
index 5e6ee85446e7..55897c4d0de1 100644
--- a/src/Controls/tests/Xaml.UnitTests/MSBuild/MSBuildTests.cs
+++ b/src/Controls/tests/Xaml.UnitTests/MSBuild/MSBuildTests.cs
@@ -280,6 +280,47 @@ public void BuildAProject()
AssertExists(IOPath.Combine(intermediateDirectory, "XamlC.stamp"));
}
+ [Theory]
+ [InlineData(null, false)]
+ [InlineData("false", false)]
+ [InlineData("true", true)]
+ public void MauiEnableFullReadyToRunPublishing_ConfiguresPartialFlagCorrectly(string mauiEnableFullReadyToRunPublishingValue, bool fullReadyToRunPublishingEnabled)
+ {
+ SetUp();
+ var project = NewProject();
+ var propertyGroup = NewElement("PropertyGroup");
+ propertyGroup.Add(NewElement("TargetPlatformIdentifier").WithValue("android"));
+ propertyGroup.Add(NewElement("UseMonoRuntime").WithValue("false"));
+ propertyGroup.Add(NewElement("Configuration").WithValue("Release"));
+ propertyGroup.Add(NewElement("PublishReadyToRun").WithValue("true"));
+ project.Add(propertyGroup);
+ var target = NewElement("Target").WithAttribute("Name", "TestReadyToRunPublishing");
+ target.Add(NewElement("Message")
+ .WithAttribute("Text", "MauiEnableFullReadyToRunPublishing = $(MauiEnableFullReadyToRunPublishing)")
+ .WithAttribute("Importance", "high"));
+ target.Add(NewElement("Message")
+ .WithAttribute("Text", "PublishReadyToRunCrossgen2ExtraArgs = $(PublishReadyToRunCrossgen2ExtraArgs)")
+ .WithAttribute("Importance", "high"));
+ project.Add(target);
+
+ var projectFile = IOPath.Combine(tempDirectory, "test.csproj");
+ project.Save(projectFile);
+ var fullReadyToRunMSBuildArg = mauiEnableFullReadyToRunPublishingValue is null
+ ? string.Empty
+ : $"-p:MauiEnableFullReadyToRunPublishing={mauiEnableFullReadyToRunPublishingValue}";
+
+ var log = Build(
+ projectFile,
+ target: "TestReadyToRunPublishing",
+ additionalArgs: fullReadyToRunMSBuildArg);
+
+ Assert.Contains($"MauiEnableFullReadyToRunPublishing = {fullReadyToRunPublishingEnabled.ToString().ToLowerInvariant()}", log, StringComparison.Ordinal);
+ if (fullReadyToRunPublishingEnabled)
+ Assert.DoesNotContain("--partial", log, StringComparison.Ordinal);
+ else
+ Assert.Contains("PublishReadyToRunCrossgen2ExtraArgs = ;--partial", log, StringComparison.Ordinal);
+ }
+
[Theory]
[InlineData("Debug")]
[InlineData("Release")]