dotnet / dotnet/android

[TrimmableTypeMap] Extract root typemap generation into GenerateEntryPointTypeMap task

Open
#11,493 0 comments 0 reactions 0 assignees View on GitHub
copilot trimmable-type-map
Dominant language
C#
Stars
2.1k
Forks
579
Avg merge
1d 20h
Merged PRs (30d)
257

Description

Part of #10958.

`TrimmableTypeMapGenerator.GenerateTypeMapAssemblies(...)` currently emits both per-assembly typemap DLLs and the root `_Microsoft.Android.TypeMaps.dll` in one monolithic pipeline. The proposed partial-build design calls for a separate entry-point/root typemap task. This issue tracks extracting that root generation as an independent build task without enabling full per-assembly partial builds yet.

## Current locations

- `src/Microsoft.Android.Sdk.TrimmableTypeMap/TrimmableTypeMapGenerator.cs`
- `GenerateTypeMapAssemblies(...)` creates each `_{Assembly}.TypeMap` and then creates `_Microsoft.Android.TypeMaps` via `RootTypeMapAssemblyGenerator`.
- `src/Microsoft.Android.Sdk.TrimmableTypeMap/Generator/RootTypeMapAssemblyGenerator.cs`
- Contains the root assembly emitter logic.
- `src/Xamarin.Android.Build.Tasks/Tasks/GenerateTrimmableTypeMap.cs`
- Writes all generated assemblies returned by the generator.

## Suggested implementation

- Add a `GenerateEntryPointTypeMap` build task that takes the per-assembly typemap assembly names/files and emits `_Microsoft.Android.TypeMaps.dll`.
- Keep existing behavior and shared-vs-per-assembly universe semantics.
- Initially wire it in a way that preserves current build behavior; the full Debug partial-build split can happen in a follow-up issue.

## Acceptance criteria

- Root typemap assembly generation is available as a separate task/API surface.
- Existing trimmable typemap behavior remains unchanged.
- Tests cover root assembly generation through the new task path.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.