-
Notifications
You must be signed in to change notification settings - Fork 137
Description
Description
Tracking for #2901. Requires #3013. source-build net4* targeting elimination required #2974
The purpose of this operation is twofold:
- Reduce the number of TFMs present overall in .NET's build, potentially improving build time.
- Eliminate framework TFMs, drastically reducing the size of the source build repository size.
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 #2901 to identify the TFMs in use in their repository. For each TFM, they should do the following:
- If the TFM can be eliminated, or upgraded to latest (e.g. target the latest netcore explicitly, or use net472), do so. netframework TFM removal for tools and internal code is likely low hanging fruit.
- Requires Design for unified behavior controls #2974 If the TFM is a framework TFM, it should be conditionalized out in source build for Linux.
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 #2974
Repositories
- TFM trimming, and elimination of net4* targeting in Linux source-build arcade#10721
- TFM trimming, and elimination of net4* targeting in Linux source-build aspnetcore#43696
- [cecil] TFM trimming, and elimination of net4* targeting in Linux source-build runtime#83991
- TFM trimming, and elimination of net4* targeting in Linux source-build command-line-api#1834
- TFM trimming, and elimination of net4* targeting in Linux source-build deployment-tools#217
- TFM trimming, and elimination of net4* targeting in Linux source-build diagnostics#3341
- [emsdk] TFM trimming, and elimination of net4* targeting in Linux source-build runtime#83278
- TFM trimming, and elimination of net4* targeting in Linux source-build format#1711
- TFM trimming, and elimination of net4* targeting in Linux source-build fsharp#13829
- TFM trimming, and elimination of net4* targeting in Linux source-build installer#14434
- TFM trimming, and elimination of net4* targeting in Linux source-build linker#3016
- TFM trimming, and elimination of net4* targeting in Linux source-build runtime#74950
- TFM trimming, and elimination of net4* targeting in Linux source-build msbuild#7936
- TFM trimming, and elimination of net4* targeting in Linux source-build NuGet/Home#12074
- TFM trimming, and elimination of net4* targeting in Linux source-build razor#7071
- TFM trimming, and elimination of net4* targeting in Linux source-build roslyn-analyzers#6144
- TFM trimming, and elimination of net4* targeting in Linux source-build roslyn#63746
- TFM trimming, and elimination of net4* targeting in Linux source-build sdk#27642
- TFM trimming, and elimination of net4* targeting in Linux source-build sourcelink#868
- TFM trimming, and elimination of net4* targeting in Linux source-build symreader#266
- TFM trimming, and elimination of net4* targeting in Linux source-build templating#5192
- TFM trimming, and elimination of net4* targeting in Linux source-build test-templates#248
- TFM trimming, and elimination of net4* targeting in Linux source-build microsoft/vstest#3989
- TFM trimming, and elimination of net4* targeting in Linux source-build xdt#464
- TFM trimming, and elimination of net4* targeting in Linux source-build xliff-tasks#663
Metadata
Metadata
Assignees
Labels
Type
Projects
Status