Skip to content

Stop using GetRequired* reflection wrappers to enable trimming#27099

Merged
roji merged 5 commits intodotnet:mainfrom
roji:GetRequiredRuntimeStuff
Jan 8, 2022
Merged

Stop using GetRequired* reflection wrappers to enable trimming#27099
roji merged 5 commits intodotnet:mainfrom
roji:GetRequiredRuntimeStuff

Conversation

@roji
Copy link
Member

@roji roji commented Jan 3, 2022

This removes GetRequiredRuntimeMethod and similar wrappers (introduced during NRT annotation), since these are opaque to the linker when performing static analysis for trimming; the reflection APIs are called directly instead.

A console program is included as a regression test - to test it, execute dotnet publish -c Release -r linux-x64 --self-contained under test/EFCore.Trimming.Test and then attempt to run EFCore.Trimming.Test from the publish directory.

Assuming we want to add this to our CI pipeline, @smitpatel where would be the right place to add it? Just an additional step e.g. under Linux in azure-pipelines.yml?

Note #27098 which provides a hacky but much smaller fix for 6.0.

Fixes #26288

@smitpatel
Copy link
Contributor

If it is not a test project, I would recommend updating azure-pipelines.yml to add additional step which runs this console app. You can also create batch file or sh file to build run it (so yml file will have single command invocation)

@roji roji force-pushed the GetRequiredRuntimeStuff branch 6 times, most recently from 799e204 to 8bd58b8 Compare January 5, 2022 14:20
@roji roji force-pushed the GetRequiredRuntimeStuff branch from 8bd58b8 to 1968694 Compare January 7, 2022 10:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

When looking up methods via reflection, be trimming/AOT-friendly

3 participants