Move RemoveResourceDesigner trimmer step to post-trim pipeline#10977
Draft
Move RemoveResourceDesigner trimmer step to post-trim pipeline#10977
RemoveResourceDesigner trimmer step to post-trim pipeline#10977Conversation
Migrate AddKeepAlivesStep out of the ILLink custom step pipeline into a standalone MSBuild task that runs AfterTargets="ILLink", following the same pattern established by StripEmbeddedLibraries in #10894. Core IL-rewriting logic is extracted into AddKeepAlivesHelper, shared by both the new task (trimmed builds) and the existing pipeline step (non-trimmed builds via LinkAssembliesNoShrink).
Replace DefaultAssemblyResolver with DirectoryAssemblyResolver (ReadWrite=true) to avoid file handle conflicts on Windows. The directory resolver caches all assemblies (both explicit and dependency-resolved), preventing duplicate file opens that caused IOException when the same assembly was opened as both a dependency and a primary target.
Replace standalone AddKeepAlives and StripEmbeddedLibraries MSBuild tasks with a single PostTrimmingPipeline task that opens assemblies once (via DirectoryAssemblyResolver with ReadWrite) and runs both modifications in a single pass. Extract StripEmbeddedLibrariesStep as an IAssemblyModifierPipelineStep for reuse.
…Step pattern Use List<IAssemblyModifierPipelineStep> with StripEmbeddedLibrariesStep and PostTrimmingAddKeepAlivesStep instead of calling helpers directly. Move the IsFrameworkAssembly check into StripEmbeddedLibrariesStep.ProcessAssembly and remove all outer-loop filtering so each step handles its own guards internally.
…line Migrate RemoveResourceDesignerStep from an ILLink custom step to a post-trimming IAssemblyModifierPipelineStep, following the same pattern used for StripEmbeddedLibrariesStep and PostTrimmingAddKeepAlivesStep. - Add PostTrimmingRemoveResourceDesignerStep with self-contained logic from LinkDesignerBase/RemoveResourceDesignerStep, using Action<string> for logging instead of ILLink's Context.LogMessage - Add AndroidLinkResources property to PostTrimmingPipeline task and pre-load all assemblies when enabled (the step needs a two-phase scan) - Remove RemoveResourceDesignerStep and GetAssembliesStep from ILLink custom steps in targets - Remove AndroidLinkConfiguration.cs and RemoveResourceDesignerStep.cs from ILLink csproj (no longer needed there) - Delete GetAssembliesStep.cs (dead code, only served RemoveResourceDesignerStep)
…eDesignerStep The old ILLink RemoveResourceDesignerStep is no longer compiled into Xamarin.Android.Build.Tasks, so the PostTrimming prefix is unnecessary. Also remove AndroidLinkConfiguration.cs from compilation as it was only used by the old ILLink step.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Migrate RemoveResourceDesignerStep from an ILLink custom step to a
post-trimming IAssemblyModifierPipelineStep, following the same pattern
used for StripEmbeddedLibrariesStep and PostTrimmingAddKeepAlivesStep.
from LinkDesignerBase/RemoveResourceDesignerStep, using Action
for logging instead of ILLink's Context.LogMessage
pre-load all assemblies when enabled (the step needs a two-phase scan)
custom steps in targets
from ILLink csproj (no longer needed there)