Some years ago we added the "missing assembly reference" warning to make users aware of issues that might impact decompilation quality, but could be easily solved with the user's help.
Due to the increasing number of new "special" types, e.g., Span<T>, Memory<T>, AsyncMethodBuilder, etc. all located in different assemblies and also being very different depending on the used version of the framework, we should alert the user in the following cases:
- The
DecompilerTypeSystem contains 2 assemblies with the same name, but a different version. Later, this should exclude assemblies that are referenced via extern aliases, but this is a really rare special case, similar to multi-module assemblies, we might get a request to support these roughly once in 10 years.
- The
DecompilerTypeSystem contains types that come from different target frameworks. The only exception here is netstandard, because there we do not have an implementation, so netstandard should be handled by following the compatibility matrix.
This idea complements #2036.