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")]