From 56629cc21e198efd72c185b53fbed2d3c11bc84c Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Wed, 8 Oct 2025 13:33:15 -0700 Subject: [PATCH 1/3] Fix up telemetry for package pruning, .NET Framework is no longer enabled by default --- .../NuGet.Commands/RestoreCommand/RestoreCommand.cs | 5 +---- .../RestoreCommand_PrunePackageReference.cs | 10 +++++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs index d53dd665f1c..91c782a0550 100644 --- a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs +++ b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs @@ -412,10 +412,7 @@ internal static void PopulatePruningEnabledTelemetry(PackageSpec project, Teleme // All .NETCoreApp, .NET Standard >= 2.0 , and .NET Framework >= 4.6.1 projects are compatible with package pruning. bool isPruningCompatibleFramework = isNetCoreAppFramework || (StringComparer.OrdinalIgnoreCase.Equals(framework.FrameworkName.Framework, FrameworkConstants.FrameworkIdentifiers.NetStandard) && - framework.FrameworkName.Version.Major >= 2) || - (project.RestoreMetadata.UsingMicrosoftNETSdk && - StringComparer.OrdinalIgnoreCase.Equals(framework.FrameworkName.Framework, FrameworkConstants.FrameworkIdentifiers.Net) && - framework.FrameworkName.Version >= FrameworkConstants.CommonFrameworks.Net461.Version); + framework.FrameworkName.Version.Major >= 2); pruningDefault |= isNetCoreAppFramework && framework.FrameworkName.Version.Major >= 10; diff --git a/test/NuGet.Core.FuncTests/NuGet.Commands.FuncTest/RestoreCommand_PrunePackageReference.cs b/test/NuGet.Core.FuncTests/NuGet.Commands.FuncTest/RestoreCommand_PrunePackageReference.cs index 458794b3988..77e61549792 100644 --- a/test/NuGet.Core.FuncTests/NuGet.Commands.FuncTest/RestoreCommand_PrunePackageReference.cs +++ b/test/NuGet.Core.FuncTests/NuGet.Commands.FuncTest/RestoreCommand_PrunePackageReference.cs @@ -2679,6 +2679,14 @@ public void PopulatePruningEnabledTelemetry_WithPruningDisabledByDefault_AndVari }, } }, + ""net9.0"": { + ""dependencies"": { + ""A"": { + ""version"": ""[1.0.0,)"", + ""target"": ""Package"", + }, + } + }, } }"; @@ -2692,7 +2700,7 @@ public void PopulatePruningEnabledTelemetry_WithPruningDisabledByDefault_AndVari RestoreCommand.PopulatePruningEnabledTelemetry(projectSpec, testEvent); testEvent["Pruning.FrameworksEnabled.Count"].Should().Be(1); testEvent["Pruning.DefaultEnabled"].Should().Be(false); - testEvent["Pruning.FrameworksUnsupported.Count"].Should().Be(1); + testEvent["Pruning.FrameworksUnsupported.Count"].Should().Be(2); testEvent["Pruning.FrameworksDisabled.Count"].Should().Be(1); } From 7a95040450d6f6d909377d8da2617f3879209ded Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Wed, 8 Oct 2025 14:35:17 -0700 Subject: [PATCH 2/3] address feedback, add more --- .../NuGet.Commands/RestoreCommand/RestoreCommand.cs | 4 ++-- .../RestoreCommandTests/RestoreCommandTests.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs index 91c782a0550..8277809e257 100644 --- a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs +++ b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs @@ -409,8 +409,8 @@ internal static void PopulatePruningEnabledTelemetry(PackageSpec project, Teleme { bool isPruningEnabled = framework.PackagesToPrune.Count > 0; bool isNetCoreAppFramework = StringComparer.OrdinalIgnoreCase.Equals(framework.FrameworkName.Framework, FrameworkConstants.FrameworkIdentifiers.NetCoreApp); - // All .NETCoreApp, .NET Standard >= 2.0 , and .NET Framework >= 4.6.1 projects are compatible with package pruning. - bool isPruningCompatibleFramework = isNetCoreAppFramework || + // .NETCoreApp >= 2.0, .NET Standard >= 2.0 are compatible with package pruning. + bool isPruningCompatibleFramework = (isNetCoreAppFramework && framework.FrameworkName.Version.Major >= 2 ) || (StringComparer.OrdinalIgnoreCase.Equals(framework.FrameworkName.Framework, FrameworkConstants.FrameworkIdentifiers.NetStandard) && framework.FrameworkName.Version.Major >= 2); diff --git a/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs b/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs index c89db8981ee..87162a56b9b 100644 --- a/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs +++ b/test/NuGet.Core.Tests/NuGet.Commands.Test/RestoreCommandTests/RestoreCommandTests.cs @@ -3104,8 +3104,8 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( projectInformationEvent["UpdatedMSBuildFiles"].Should().Be(false); projectInformationEvent["NETSdkVersion"].Should().Be(NuGetVersion.Parse("10.0.100")); projectInformationEvent["Pruning.FrameworksEnabled.Count"].Should().Be(0); - projectInformationEvent["Pruning.FrameworksDisabled.Count"].Should().Be(1); - projectInformationEvent["Pruning.FrameworksUnsupported.Count"].Should().Be(0); + projectInformationEvent["Pruning.FrameworksDisabled.Count"].Should().Be(0); + projectInformationEvent["Pruning.FrameworksUnsupported.Count"].Should().Be(1); projectInformationEvent["Pruning.DefaultEnabled"].Should().Be(false); projectInformationEvent["UsesLegacyPackagesDirectory"].Should().Be(false); } From 3e65236bd0f62e41477e16a03ad87dc933598a2b Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Wed, 8 Oct 2025 16:19:27 -0700 Subject: [PATCH 3/3] format --- src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs index 8277809e257..cda62c8ac11 100644 --- a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs +++ b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs @@ -410,7 +410,7 @@ internal static void PopulatePruningEnabledTelemetry(PackageSpec project, Teleme bool isPruningEnabled = framework.PackagesToPrune.Count > 0; bool isNetCoreAppFramework = StringComparer.OrdinalIgnoreCase.Equals(framework.FrameworkName.Framework, FrameworkConstants.FrameworkIdentifiers.NetCoreApp); // .NETCoreApp >= 2.0, .NET Standard >= 2.0 are compatible with package pruning. - bool isPruningCompatibleFramework = (isNetCoreAppFramework && framework.FrameworkName.Version.Major >= 2 ) || + bool isPruningCompatibleFramework = (isNetCoreAppFramework && framework.FrameworkName.Version.Major >= 2) || (StringComparer.OrdinalIgnoreCase.Equals(framework.FrameworkName.Framework, FrameworkConstants.FrameworkIdentifiers.NetStandard) && framework.FrameworkName.Version.Major >= 2);