-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Update maintenance-packages pruning versions #49092
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update maintenance-packages pruning versions #49092
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This pull request updates the pruning versions for maintenance packages in the .NET build tasks, ensuring that only frameworks previously pruning the version just before the maintenance-package version are updated.
- Updated maintenance-package versions for NETStandard2.1, NETCoreApp3.1, NETCoreApp2.1, NET6.0, and NET5.0 frameworks.
- Bumps include packages such as System.Buffers, System.Memory, System.Numerics.Vectors, System.Reflection.DispatchProxy, among others.
Reviewed Changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.
Show a summary per file
File | Description |
---|---|
src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netstandard2.1.cs | Bumped versions for System.Buffers, System.Memory, System.Numerics.Vectors, and System.Threading.Tasks.Extensions. |
src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netcoreapp3.1.cs | Updated System.Reflection.DispatchProxy version. |
src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netcoreapp2.1.cs | Updated versions for System.Memory, System.Numerics.Vectors, System.Threading.Tasks.Extensions, and System.ValueTuple. |
src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.net6.0.cs | Raised the version for System.Runtime.CompilerServices.Unsafe. |
src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.net5.0.cs | Updated System.Reflection.DispatchProxy version. |
This updates pruning versions for maintenance-packages. We do so only on frameworks where they were previously pruning the version just before the maintenance-package version.
e968482
to
380b99b
Compare
src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netcoreapp2.1.cs
Show resolved
Hide resolved
src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netcoreapp2.1.cs
Show resolved
Hide resolved
src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netcoreapp3.1.cs
Show resolved
Hide resolved
src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.net6.0.cs
Show resolved
Hide resolved
src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netcoreapp2.1.cs
Show resolved
Hide resolved
Versions 4.4.0 and later for this package all have a placeholder for `netstandard2.0` so it's safe to prune as it doesn't expose any reference.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"System.Runtime.CompilerServices.Unsafe", "6.1.2"
This means that we would need to update this data every time m-p publishes new packages, right? For PackageOverrides.txt entries we chose the next major version: https://github.com/dotnet/runtime/blob/e163124bce28b7e868b62f4efd498fcaa7f95301/src/installer/pkg/sfx/Microsoft.NETCore.App/PackageOverrides.txt#L225
Can we do the same here? In general it would be good use the same versions as in PackageOverrides.txt for these m-p packages.
I think @dsplaisted already employ's lifting of these package versions sdk/src/Tasks/Microsoft.NET.Build.Tasks/GetPackagesToPrune.cs Lines 214 to 223 in 2310f2b
|
If I read the code correctly, only if the package uses a prerelease version. The m-p ones use a stable version. |
No - it's for non-prerelease. It's disabled for pre-release where API and features of the package might be changing more often. Once the package is released we're in "servicing" in which case this rule to prune higher patch versions is applied. |
Sounds good. Should conflict resolution get updated to use the same algorithm? |
No I don't think so. Conflict resolution doesn't need to approximate. It also knows nothing about frameworks today. It's much more general purpose. The reason we do this for pruning is because we have a specific opinion/policy about the packages that overlap with .NETCore. |
/azp run dotnet-sdk-public-ci |
Azure Pipelines successfully started running 1 pipeline(s). |
Thanks for your patience when addressing my questions. Last one:
So every time we bump the major/minor version of these m-p packages, we would need to update these versions here. Do we expect more minor version m-p updates going forward? If so, would it be better to use a high minor and patch version instead? I.e. |
We expect no minor version updates from maintenance-packages. |
I'll add to this that it's really just a convenience. Most of these packages now use placeholders for frameworks where they are dropped, and most of their dependencies from newer versions are up to date, so removing them just saves on download - not false positives or large unused package graphs. |
Thinking more about this, I think we had previously suggested this just for PackageOverrides.txt, so I'll file an issue for @dsplaisted to follow up. |
/azp run dotnet-sdk-public-ci |
Azure Pipelines successfully started running 1 pipeline(s). |
/ba-g all test failures are known |
Porting changes from dotnet/sdk#49092 dotnet/sdk#49882 These improve the accuracy of the FrameworkPackages -- accounting for some packages which were removed from the shared framework, and representing the latest version of packages which were absorbed into the framework.
* Update framework package data Porting changes from dotnet/sdk#49092 dotnet/sdk#49882 These improve the accuracy of the FrameworkPackages -- accounting for some packages which were removed from the shared framework, and representing the latest version of packages which were absorbed into the framework. * Update src/Microsoft.ComponentDetection.Detectors/nuget/FrameworkPackages/FrameworkPackages.cs
Fixes #47314
This updates pruning versions for maintenance-packages. We do so only on frameworks where they were previously pruning the version just before the maintenance-package version.