Skip to content

GetMemberWithSameMetadataDefinitionAs triggers IL2070 #719

Closed

Description

@jnyrup

Describe the bug

When trying to use Squash with TimeZoneConverter which uses Polyfill, I got linker errors for Polyfill.GetMemberWithSameMetadataDefinitionAs:

polyfill\11.4.4\contentFiles\cs\netstandard2.0\Polyfill_Type.cs(122,24): Trim analysis error IL2070: Polyfills.Polyfill.GetMemberWithSameMetadataDefinitionAs(Type, MemberInfo): 'this' 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' in call to 'System.Type.GetMembers(BindingFlags)'. The parameter 'type' of method 'Polyfills.Polyfill.GetMemberWithSameMetadataDefinitionAs(Type, MemberInfo)' 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.
polyfill\11.4.4\contentFiles\cs\net462\Polyfill_Type.cs(122,24): Trim analysis error IL2070: Polyfills.Polyfill.GetMemberWithSameMetadataDefinitionAs(Type, MemberInfo): 'this' 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' in call to 'System.Type.GetMembers(BindingFlags)'. The parameter 'type' of method 'Polyfills.Polyfill.GetMemberWithSameMetadataDefinitionAs(Type, MemberInfo)' 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.

Minimal Repro

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Polyfill" Version="11.4.4" PrivateAssets="all" />
    <PackageReference Include="Squash" Version="2.1.0" PrivateAssets="all" /> 
  </ItemGroup>

</Project>
using System;

public static class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine(typeof(Program).GetMemberWithSameMetadataDefinitionAs(null));
    }
}

zipped repro

Running dotnet build -c Release gives

GetMemberWithSameMetadataDefinitionAs netstandard2.0 succeeded with 1 warning(s) (0,8s) → GetMemberWithSameMetadataDefinitionAs\bin\Release\netstandard2.0\GetMemberWithSameMetadataDefinitionAs.dll
    polyfill\11.4.4\contentFiles\cs\netstandard2.0\Polyfill_Type.cs(122,24): Trim analysis warning IL2070: Polyfills.Polyfill.GetMemberWithSameMetadataDefinitionAs(Type, MemberInfo): 'this' 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' in call to 'System.Type.GetMembers(BindingFlags)'. The parameter 'type' of method 'Polyfills.Polyfill.GetMemberWithSameMetadataDefinitionAs(Type, MemberInfo)' 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.

Submit a PR that fixes the bug

I'm unsure whether this is a bug or a limitation in Polyfill, so I don't have any (partial) work to show.

Activity

  1. SimonCropp commented on Oct 12, 2026

    @SimonCropp
    Owner

    Fix in #723

  2. added this to the 11.4.5 milestone on Oct 12, 2026
  3. jnyrup commented on Oct 13, 2026

    @jnyrup
    ContributorAuthor

    Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions