diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml index ed8514e4c9c..0796a5fb81e 100644 --- a/build-tools/automation/azure-pipelines.yaml +++ b/build-tools/automation/azure-pipelines.yaml @@ -203,6 +203,16 @@ extends: artifactSource: bin/Test$(XA.Build.Configuration)/$(DotNetTargetFramework)-android/Mono.Android.NET_Tests-Signed.aab artifactFolder: $(DotNetTargetFramework)-NoAot + - template: /build-tools/automation/yaml-templates/apk-instrumentation.yaml@self + parameters: + configuration: $(XA.Build.Configuration) + testName: Mono.Android.NET_Tests-TrimModePartial + project: tests/Mono.Android-Tests/Runtime-Microsoft.Android.Sdk/Mono.Android.NET-Tests.csproj + testResultsFiles: TestResult-Mono.Android.NET_Tests-$(XA.Build.Configuration)TrimModePartial.xml + extraBuildArgs: -p:TestsFlavor=TrimModePartial -p:TrimMode=partial + artifactSource: bin/Test$(XA.Build.Configuration)/$(DotNetTargetFramework)-android/Mono.Android.NET_Tests-Signed.aab + artifactFolder: $(DotNetTargetFramework)-TrimModePartial + - template: /build-tools/automation/yaml-templates/apk-instrumentation.yaml@self parameters: configuration: $(XA.Build.Configuration) diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets index 7e95621a2d2..f4b2c338709 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets @@ -114,6 +114,8 @@ true false true + + <_DefaultValueAttributeSupport Condition="'$(_DefaultValueAttributeSupport)' == '' and '$(TrimMode)' == 'partial'">true false $(AvoidEmitForPerformance) true diff --git a/tests/Mono.Android-Tests/Mono.Android-Test.Shared.projitems b/tests/Mono.Android-Tests/Mono.Android-Test.Shared.projitems index 0b1ccf1d595..a13accab96d 100644 --- a/tests/Mono.Android-Tests/Mono.Android-Test.Shared.projitems +++ b/tests/Mono.Android-Tests/Mono.Android-Test.Shared.projitems @@ -48,6 +48,7 @@ + diff --git a/tests/Mono.Android-Tests/Runtime-Microsoft.Android.Sdk/Mono.Android.NET-Tests.csproj b/tests/Mono.Android-Tests/Runtime-Microsoft.Android.Sdk/Mono.Android.NET-Tests.csproj index d8affbe62dd..ad1e6e8e7fa 100644 --- a/tests/Mono.Android-Tests/Runtime-Microsoft.Android.Sdk/Mono.Android.NET-Tests.csproj +++ b/tests/Mono.Android-Tests/Runtime-Microsoft.Android.Sdk/Mono.Android.NET-Tests.csproj @@ -38,7 +38,8 @@ r8 full - true + true + <_DefaultValueAttributeSupport Condition="'$(TrimMode)' == 'full'">true diff --git a/tests/Mono.Android-Tests/System.Xml/XmlSerializer.cs b/tests/Mono.Android-Tests/System.Xml/XmlSerializer.cs new file mode 100644 index 00000000000..61cb3ce56a9 --- /dev/null +++ b/tests/Mono.Android-Tests/System.Xml/XmlSerializer.cs @@ -0,0 +1,23 @@ +using System.Xml.Serialization; +using System.ComponentModel; + +using NUnit.Framework; + +namespace System.XmlTests { + public class C { + [DefaultValue(typeof(C), "c")] + public Type? T { get; } + } + + [TestFixture] + public class XmlSerializerTest { + + [Test] + public void TrimmingDefaultValueAttribute () + { + // Context: https://github.com/dotnet/runtime/issues/109724 + var s = new XmlSerializer(typeof(C)); + _ = new C().T; // Prevent C.T from being removed by trimming + } + } +}