Open dsplaisted opened 6 years ago
I would strongly prefer #7344 because it delivers more directly on the notion that there are no packages in the traditional sense that represent platform API.
Moving this into the Icebox -- this is fairly low priority for us, considering the impact.
With .NET Core 3.0, we will be using targeting packs to deliver reference assemblies for the framework. These targeting packs will not be represented as NuGet packages in the package graph in the way that Microsoft.NETCore.App, Microsoft.AspNetCore.App, and NETStandard.Library currently are.
When a .NET Core 3 project depends on a package that has a dependency on one of these older "platform" packages, we want that platform package and its dependencies to be ignored in the NuGet graph, as those APIs are supplied by the platform via other mechanisms (targeting packs at build time and runtime packs for self-contained deployments).
We've thought of two possible ways to exclude the platform packages and dependencies from the graph. This issue is for one of them, and I will file another issue for the other option.
One option is for us to produce empty 3.0 versions of these platform packages, and implicitly reference them from .NET Core 3.0 projects. This would prevent the previous versions of the packages, as well as their dependencies, from being used in the graph.
However, these empty 3.0 packages would be confusing to see in the list of installed packages in the package manager UI. So if we go with the "empty package" option, we'd like a way to entirely exclude these packages from the NuGet UI. Probably this could be a new piece of metadata on the
PackageReference
, for exampleVisible="false"
.