TFM trimming, and elimination of net4* targeting in Linux source-build #5192
Labels
area: infra
The issue is related to engineering infrastructure.
triaged
The issue was evaluated by the triage team, placed on correct area, next action defined.
Description
Trim away unneeded TFMs, and conditionalize away non-applicable TFMs for Linux source build.
Requires dotnet/source-build#3013. source-build net4* targeting elimination required dotnet/source-build#2974
The purpose of this operation is twofold:
When TFMs other than the latest .NET Core TFM are targeted in source-build, the reference assets for that TFM must be provided via a source build reference package. This is a 'text only' package that is assembled from IL at the beginning of the build to satisfy the required reference assets. In Microsoft's build, these would be restored from the internet, but in source build this is not allowed.
These SBRPs are large. All told, the total size contribution for just the netframework 4* TFMs is around 3GB. Not only does this have a significant contribution to the source build repo size, but it also affects build time. For Linux source build, we spend large amounts of time building assets that are simply thrown away at the end.
An 'ideal' would be a single TFM used throughout all of the .NET build, source build or otherwise. This is not possible. There are legitimate reasons to target older TFMs, especially netstandard. However, we should be able to justify each additional TFM.
To complete this work, repositories will use the tooling provided via dotnet/source-build#2901 to identify the TFMs in use in their repository. For each TFM, they should do the following:
It is a goal that the form of this conditionalization remain consistent across projects, and used relatively sparingly. How this conditionalization should be done will be designed in dotnet/source-build#2974. Once that is done, this issue will be updated with implementation details.
The text was updated successfully, but these errors were encountered: