Search Issue Tracker
PlayerBuildInterface.ExtraTypesProvider no longer provides types to IL2CPP
`PlayerBuildInterface.ExtraTypesProvider` was an undocumented feature used to allow code to provide a list of types that would be passed to IL2CPP when generating cpp. This allowed for code to provide closed forms for generic types/methods that cannot be seen statically by IL2CPP.
In 2021 and newer, this feature no longer works. Entities-0.51 is the first release for with Unity 2021 support and the removal of this feature is currently causing runtime exceptions being thrown in users upgrading from 2020 (https://forum.unity.com/threads/executionengineexception-attempting-to-call-method-unity-entities-fastequality-compareimpl-1.1296462/).
Users have a workaround by enabling generic sharing however in 2021 this is not the default behaviour, and enabling generic sharing comes with a performance cost.
Re-adding the feature would restore the previous correctness and performance seen in 2020. Unity 2022 enabled generic sharing as a fallback which hides the problem for users but sneakily still adds the performance cost with this feature removed so adding it back to 2022+ would be worthwhile until a better approach to providing additional types to IL2CPP can be created.
Original report, thread of updates/discussion and provided repro/test case:
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
- Resizing Profiler Module Details panel and releasing mouse button outside Unity doesn't cancel resize
- "Auto-hide gizmos" preference is not saved when reopening the project
- Sampling a custom depth texture on a machine with a GTX 1080 makes object's textures display the wrong color when in Play mode or Player
- Terrain is missing the Hidden/TerrainEngine/Details/WavingDoublePass shader when AssetBundles are built in older Unity Versions
- [Android] URP Project crashes when built on a device with PowerVR Rogue GE8320 GPU