-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Update maintenance-packages pruning versions #49092
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
base: main
Are you sure you want to change the base?
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
@@ -17,23 +17,23 @@ internal static class NETCoreApp21 | |||
{ "Microsoft.NETCore.App", "2.1.0" }, | |||
{ "Microsoft.VisualBasic", "10.3.0" }, | |||
{ "Microsoft.Win32.Registry", "4.5.0" }, | |||
{ "System.Buffers", "4.5.0" }, | |||
{ "System.Buffers", "4.6.1" }, |
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.
We cannot change
sdk/src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netcoreapp2.0.cs
Line 171 in 380b99b
{ "System.Buffers", "4.4.0" }, |
netcoreapp2.0
only included assembly 4.0.2.0
while the package has 4.0.3.0
.
{ "System.Memory", "4.5.5" }, | ||
{ "System.Numerics.Vectors", "4.5.0" }, | ||
{ "System.Memory", "4.6.3" }, | ||
{ "System.Numerics.Vectors", "4.6.1" }, |
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.
We cannot change
sdk/src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netcoreapp2.0.cs
Line 185 in 0e185be
{ "System.Numerics.Vectors", "4.4.0" }, |
netcoreapp2.0
only included assembly 4.1.3.0
while the package has 4.1.4.0
.
@@ -19,7 +19,7 @@ internal static class NETCoreApp31 | |||
{ "System.ComponentModel.Annotations", "4.7.0" }, | |||
{ "System.Diagnostics.DiagnosticSource", "4.7.0" }, | |||
{ "System.IO.FileSystem.AccessControl", "4.7.0" }, | |||
{ "System.Reflection.DispatchProxy", "4.7.0" }, | |||
{ "System.Reflection.DispatchProxy", "4.8.2" }, |
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.
We cannot change
sdk/src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netcoreapp2.0.cs
Line 189 in 0e185be
{ "System.Reflection.DispatchProxy", "4.4.0" }, |
sdk/src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netcoreapp2.1.cs
Line 28 in 0e185be
{ "System.Reflection.DispatchProxy", "4.5.0" }, |
sdk/src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netcoreapp3.0.cs
Line 25 in 0e185be
{ "System.Reflection.DispatchProxy", "4.6.0" }, |
sdk/src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netstandard2.1.cs
Line 31 in 0e185be
{ "System.Reflection.DispatchProxy", "4.5.1" }, |
Because of the following versions in framework, while the package uses 4.0.6.0
:
Framework | Version in Framework |
---|---|
netcoreapp2.0 | 4.0.3.0 |
netcoreapp2.1 | 4.0.4.0 |
netcoreapp3.1 | 4.0.5.0 |
netstandard2.1 | 4.0.5.0 |
@@ -18,7 +18,7 @@ internal static class NETCoreApp60 | |||
{ "System.Formats.Asn1", "6.0.0" }, | |||
{ "System.Net.Http.Json", "6.0.0" }, | |||
{ "System.Reflection.Metadata", "6.0.0" }, | |||
{ "System.Runtime.CompilerServices.Unsafe", "6.0.0" }, | |||
{ "System.Runtime.CompilerServices.Unsafe", "6.1.2" }, |
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.
We can't change past versions for this, of course, because it was still shipping major versions/API.
{ "System.Reflection.DispatchProxy", "4.5.0" }, | ||
{ "System.Reflection.Metadata", "1.6.0" }, | ||
{ "System.Security.AccessControl", "4.5.0" }, | ||
{ "System.Security.Cryptography.Cng", "4.5.2" }, | ||
{ "System.Security.Cryptography.OpenSsl", "4.5.0" }, | ||
{ "System.Security.Principal.Windows", "4.5.0" }, | ||
{ "System.Threading.Tasks.Dataflow", "4.9.0" }, | ||
{ "System.Threading.Tasks.Extensions", "4.5.4" }, | ||
{ "System.ValueTuple", "4.5.0" }, | ||
{ "System.Threading.Tasks.Extensions", "4.6.3" }, |
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.
We cannot change
sdk/src/Tasks/Microsoft.NET.Build.Tasks/FrameworkPackages/FrameworkPackages.netcoreapp2.0.cs
Line 207 in 0e185be
{ "System.Threading.Tasks.Extensions", "4.4.0" }, |
netcoreapp2.0
only included assembly 4.1.1.0
while the package has 4.2.1.0
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. |
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.