Skip to content

Replace harvested package assets with live built configurations #47530

Closed
@ViktorHofer

Description

@ViktorHofer

The runtime repository currently produces 98 packages from libraries and 25 of those contain prebuilts (assets which are not built in the master/main branch anymore). Such prebuilt assets are redistributed into packages via a mechanism called “harvesting”. Without going into detail, the harvesting infrastructure downloads the latest available assets of the “current band” and places them into a specified subfolder inside the package.

In contrast to simplification of the build graph, harvesting has numerous downsides:

  • Increased cost of servicing as code fixes need to be applied in the repository’s branch in which the code lives, which is not necessarily the same place where the package is produced and shipped from.
  • Dependency between servicing releases, especially during MSRCs which forces schedules to be aligned.
  • Source link and newer compiler features (IL size reduction / optimization) are not applicable to harvested assets which causes NuGet Package Explorer to list the whole package as unhealthy.
  • Package validation costs
  • Fat packages
  • Harvesting build validation causes builds to fail in PRs every time new assets are shipped to indicate that harvesting defines should be updated.
  • Maintenance of code bases which are not tested anymore.

Based on these disadvantages, we would like to remove harvesting in dotnet/runtime entirely and only ship what is being built live.

Implementation

For the following libraries, build configurations need to be added and/or harvesting configurations in the pkgproj need to be removed.

Add a build warning wherever functionality would regress.

cc @danmosemsft @ericstj @terrajobst @tommcdon

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions