Description
#72051 added IsTrimmable=false
to System.Transactions.Local
, which is an assembly in the shared framework. This means it is referenced for every app. Users don't opt-in and can't opt-out of referencing it in their app.
As #74506 points out, this caused a size regression on WASM. Subsequently #74828 fixed it to only be IsTrimmable=false
on non-Windows.
However, Windows is still a problem. Setting IsTrimmable=false
on any shared framework library is not correct. Instead, we need to be marking the unsafe APIs with [RequiresUnreferencedCode]
and need to be using trimmer descriptors as necessary in order to make the library build not trim needed, unreferenced code.
As part of this, we should probably add a rule to our build that says "All shared fx libraries should be 'IsTrimmable=true' on all platforms."