The assembly store v4 format never shipped. It existed only in .NET 11 previews/RC and was reverted to v3 before GA by dotnet/android#12780 (8f7c4d4, 2026-09-15), which removed the opt-in decompression cache after remeasurement showed it cost ~162 ms of startup rather than saving it. The cache was the only thing v4's extra content_id header field existed for.
Confirmed on dotnet/android main (which is the .NET 11 branch — there is no release/11.0.1xx, and eng/Versions.props has AndroidPackVersion 37.2.0, suffix rc.2):
AssemblyStoreGenerator.cs emits ASSEMBLY_STORE_FORMAT_VERSION_CORECLR_64BIT = 0x80000003
StoreReader_V2.Classes.cs has no content_id; Header.NativeSize is a flat 5 * sizeof(uint) const
StoreReader_V2.cs no longer lists the _V4 | ABI versions and has dropped ASSEMBLY_STORE_FORMAT_NUMBER_MASK
CoreCLR still writes 32-bit CRC32 name hashes on every ABI, so .NET 11 GA stores are v3, 64-bit ABI, 9-byte index entries — handled by the index-entry sizing in #5577, independently of the format version.
version7 is meant to be ready for .NET 11 GA, not to carry support for prerelease formats. Once global.json moves off 11.0.100-rc.1, the v4 code is dead weight.
Scope
In src/Sentry.Android.AssemblyReader/V2/:
StoreReader.cs — drop ASSEMBLY_STORE_FORMAT_VERSION_CORECLR_64BIT_V4 / ..._32BIT_V4, their four supportedVersions entries, ASSEMBLY_STORE_FORMAT_NUMBER_MASK, and the conditional content_id read in IsSupported()
StoreReader.Classes.cs — drop Header.content_id and make NativeSize a const again, matching upstream
ATTRIBUTION.txt and the file header comments — drop the v4 sync points
In test/Sentry.Android.AssemblyReader.Tests/StoreReaderTests.cs:
- Drop the three v4
Create_SupportedVersion_ReadsStore cases; the v3 CoreCLR (32-bit hash) and MonoVM (64-bit hash) cases already cover both index layouts
Create_InvalidIndexSize_Throws builds its fixture with a 0x80000004 header — move it onto v3
- Add
0x80000004u | ABI to Create_UnsupportedVersion_ReturnsNull
Prerequisites
Do this after the global.json SDK/workload pin moves from 11.0.100-rc.1 to rc.2 or GA, so the net11.0 APK tests are exercising real v3 stores when v4 support is removed. Removing it before that bump would break the tests re-enabled by #5577.
Depends on #5577.
The assembly store v4 format never shipped. It existed only in .NET 11 previews/RC and was reverted to v3 before GA by dotnet/android#12780 (
8f7c4d4, 2026-09-15), which removed the opt-in decompression cache after remeasurement showed it cost ~162 ms of startup rather than saving it. The cache was the only thing v4's extracontent_idheader field existed for.Confirmed on
dotnet/androidmain(which is the .NET 11 branch — there is norelease/11.0.1xx, andeng/Versions.propshasAndroidPackVersion 37.2.0, suffixrc.2):AssemblyStoreGenerator.csemitsASSEMBLY_STORE_FORMAT_VERSION_CORECLR_64BIT = 0x80000003StoreReader_V2.Classes.cshas nocontent_id;Header.NativeSizeis a flat5 * sizeof(uint)constStoreReader_V2.csno longer lists the_V4 | ABIversions and has droppedASSEMBLY_STORE_FORMAT_NUMBER_MASKCoreCLR still writes 32-bit CRC32 name hashes on every ABI, so .NET 11 GA stores are v3, 64-bit ABI, 9-byte index entries — handled by the index-entry sizing in #5577, independently of the format version.
version7is meant to be ready for .NET 11 GA, not to carry support for prerelease formats. Onceglobal.jsonmoves off11.0.100-rc.1, the v4 code is dead weight.Scope
In
src/Sentry.Android.AssemblyReader/V2/:StoreReader.cs— dropASSEMBLY_STORE_FORMAT_VERSION_CORECLR_64BIT_V4/..._32BIT_V4, their foursupportedVersionsentries,ASSEMBLY_STORE_FORMAT_NUMBER_MASK, and the conditionalcontent_idread inIsSupported()StoreReader.Classes.cs— dropHeader.content_idand makeNativeSizeaconstagain, matching upstreamATTRIBUTION.txtand the file header comments — drop the v4 sync pointsIn
test/Sentry.Android.AssemblyReader.Tests/StoreReaderTests.cs:Create_SupportedVersion_ReadsStorecases; the v3 CoreCLR (32-bit hash) and MonoVM (64-bit hash) cases already cover both index layoutsCreate_InvalidIndexSize_Throwsbuilds its fixture with a0x80000004header — move it onto v30x80000004u | ABItoCreate_UnsupportedVersion_ReturnsNullPrerequisites
Do this after the
global.jsonSDK/workload pin moves from11.0.100-rc.1to rc.2 or GA, so thenet11.0APK tests are exercising real v3 stores when v4 support is removed. Removing it before that bump would break the tests re-enabled by #5577.Depends on #5577.