Skip to content

[4.3.0] Native AoT test project fails to compile due to trim analysis errors #9769

Description

@martincostello

Describe the bug

Updating a native AoT test application from 4.2.6 to 4.3.0 breaks compilation due to multiple trim analysis warnings during compilation.

Version used

MSTest.Sdk 4.3.0

Steps To Reproduce

  1. Clone https://github.com/martincostello/alexa-london-travel.git
  2. Checkout martincostello/alexa-london-travel@c6777ad
  3. Run build.ps1 from the root of the repository

Expected behavior

Test project compiles, runs and tests pass.

Actual behavior

Test project fails to compile.

Terminal output copied below.

Snippet of dotnet build output
/_/src/Microsoft.TestPlatform.ObjectModel/TestObject.cs(269): Trim analysis error IL2026: Microsoft.VisualStudio.TestPlatform.ObjectModel.TestObject.ConvertPropertyFrom<T>(TestProperty,CultureInfo,Object): Using member 'System.ComponentModel.TypeDescriptor.GetConverter(Type)' which has 'RequiresUnreferencedCodeAttribute' can break functionality when trimming application code. Generic TypeConverters may require the generic types to be annotated. For example, NullableConverter requires the underlying type to be DynamicallyAccessedMembers All. [/home/runner/work/alexa-london-travel/alexa-london-travel/test/LondonTravel.Skill.NativeAotTests/LondonTravel.Skill.NativeAotTests.csproj]
/_/src/Microsoft.TestPlatform.ObjectModel/TestObject.cs(269): Trim analysis error IL2072: Microsoft.VisualStudio.TestPlatform.ObjectModel.TestObject.ConvertPropertyFrom<T>(TestProperty,CultureInfo,Object): 'type' argument does not satisfy 'DynamicallyAccessedMemberTypes.PublicConstructors', 'DynamicallyAccessedMemberTypes.NonPublicConstructors', 'DynamicallyAccessedMemberTypes.PublicMethods', 'DynamicallyAccessedMemberTypes.NonPublicMethods', 'DynamicallyAccessedMemberTypes.PublicFields', 'DynamicallyAccessedMemberTypes.NonPublicFields', 'DynamicallyAccessedMemberTypes.PublicNestedTypes', 'DynamicallyAccessedMemberTypes.NonPublicNestedTypes', 'DynamicallyAccessedMemberTypes.PublicProperties', 'DynamicallyAccessedMemberTypes.NonPublicProperties', 'DynamicallyAccessedMemberTypes.PublicEvents', 'DynamicallyAccessedMemberTypes.NonPublicEvents', 'DynamicallyAccessedMemberTypes.Interfaces', 'DynamicallyAccessedMemberTypes.NonPublicConstructorsWithInherited', 'DynamicallyAccessedMemberTypes.NonPublicMethodsWithInherited', 'DynamicallyAccessedMemberTypes.AllMethods', 'DynamicallyAccessedMemberTypes.NonPublicFieldsWithInherited', 'DynamicallyAccessedMemberTypes.AllFields', 'DynamicallyAccessedMemberTypes.NonPublicNestedTypesWithInherited', 'DynamicallyAccessedMemberTypes.NonPublicPropertiesWithInherited', 'DynamicallyAccessedMemberTypes.AllProperties', 'DynamicallyAccessedMemberTypes.NonPublicEventsWithInherited', 'DynamicallyAccessedMemberTypes.AllEvents', 'DynamicallyAccessedMemberTypes.PublicConstructorsWithInherited', 'DynamicallyAccessedMemberTypes.AllConstructors', 'DynamicallyAccessedMemberTypes.PublicNestedTypesWithInherited', 'DynamicallyAccessedMemberTypes.AllNestedTypes' in call to 'System.ComponentModel.TypeDescriptor.GetConverter(Type)'. The return value of method 'Microsoft.VisualStudio.TestPlatform.ObjectModel.TestProperty.GetValueType()' does not have matching annotations. The source value must declare at least the same requirements as those declared on the target location it is assigned to. [/home/runner/work/alexa-london-travel/alexa-london-travel/test/LondonTravel.Skill.NativeAotTests/LondonTravel.Skill.NativeAotTests.csproj]
/_/src/Microsoft.TestPlatform.ObjectModel/TestObject.cs(315): Trim analysis error IL2026: Microsoft.VisualStudio.TestPlatform.ObjectModel.TestObject.ConvertPropertyTo<T>(TestProperty,CultureInfo,Object): Using member 'System.ComponentModel.TypeDescriptor.GetConverter(Type)' which has 'RequiresUnreferencedCodeAttribute' can break functionality when trimming application code. Generic TypeConverters may require the generic types to be annotated. For example, NullableConverter requires the underlying type to be DynamicallyAccessedMembers All. [/home/runner/work/alexa-london-travel/alexa-london-travel/test/LondonTravel.Skill.NativeAotTests/LondonTravel.Skill.NativeAotTests.csproj]
/_/src/Microsoft.TestPlatform.ObjectModel/TestObject.cs(315): Trim analysis error IL2072: Microsoft.VisualStudio.TestPlatform.ObjectModel.TestObject.ConvertPropertyTo<T>(TestProperty,CultureInfo,Object): 'type' argument does not satisfy 'DynamicallyAccessedMemberTypes.PublicConstructors', 'DynamicallyAccessedMemberTypes.NonPublicConstructors', 'DynamicallyAccessedMemberTypes.PublicMethods', 'DynamicallyAccessedMemberTypes.NonPublicMethods', 'DynamicallyAccessedMemberTypes.PublicFields', 'DynamicallyAccessedMemberTypes.NonPublicFields', 'DynamicallyAccessedMemberTypes.PublicNestedTypes', 'DynamicallyAccessedMemberTypes.NonPublicNestedTypes', 'DynamicallyAccessedMemberTypes.PublicProperties', 'DynamicallyAccessedMemberTypes.NonPublicProperties', 'DynamicallyAccessedMemberTypes.PublicEvents', 'DynamicallyAccessedMemberTypes.NonPublicEvents', 'DynamicallyAccessedMemberTypes.Interfaces', 'DynamicallyAccessedMemberTypes.NonPublicConstructorsWithInherited', 'DynamicallyAccessedMemberTypes.NonPublicMethodsWithInherited', 'DynamicallyAccessedMemberTypes.AllMethods', 'DynamicallyAccessedMemberTypes.NonPublicFieldsWithInherited', 'DynamicallyAccessedMemberTypes.AllFields', 'DynamicallyAccessedMemberTypes.NonPublicNestedTypesWithInherited', 'DynamicallyAccessedMemberTypes.NonPublicPropertiesWithInherited', 'DynamicallyAccessedMemberTypes.AllProperties', 'DynamicallyAccessedMemberTypes.NonPublicEventsWithInherited', 'DynamicallyAccessedMemberTypes.AllEvents', 'DynamicallyAccessedMemberTypes.PublicConstructorsWithInherited', 'DynamicallyAccessedMemberTypes.AllConstructors', 'DynamicallyAccessedMemberTypes.PublicNestedTypesWithInherited', 'DynamicallyAccessedMemberTypes.AllNestedTypes' in call to 'System.ComponentModel.TypeDescriptor.GetConverter(Type)'. The return value of method 'Microsoft.VisualStudio.TestPlatform.ObjectModel.TestProperty.GetValueType()' does not have matching annotations. The source value must declare at least the same requirements as those declared on the target location it is assigned to.

Additional context

None.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions