From 089bdbcbbcab7bc495417d0673fc0cb8d0b5debc Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Wed, 15 Jul 2026 14:26:47 -0500 Subject: [PATCH] Decouple SDK package versions Use previous published .NET package versions for shipping projects while keeping tests on the current SDK versions. Float generated template dependencies during previews and materialize stable versions at GA. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 04f3cfc9-6fd2-4bf1-9c79-0413b50f5ae6 --- eng/NuGetVersions.targets | 154 +++++++++++++++--- eng/Versions.props | 12 +- eng/scripts/update-cgmanifest.ps1 | 6 +- .../Compatibility.Core.UnitTests.csproj | 1 + .../Build.Tasks/Controls.Build.Tasks.csproj | 2 +- .../Controls.Core.UnitTests.csproj | 1 + .../ManualTests/Controls.ManualTests.csproj | 3 +- .../Controls.TestCases.HostApp.csproj | 1 + .../Controls.Xaml.UnitTests.csproj | 5 +- .../tests/Benchmarks/Core.Benchmarks.csproj | 1 + .../Core.DeviceTests.Shared.csproj | 3 +- .../tests/UnitTests/Core.UnitTests.csproj | 1 + .../src/Microsoft.Maui.Templates.csproj | 61 ++++++- .../TestUtils.DeviceTests.Runners.csproj | 5 +- .../Microsoft.NET.Sdk.Maui.Manifest.csproj | 20 ++- 15 files changed, 224 insertions(+), 52 deletions(-) diff --git a/eng/NuGetVersions.targets b/eng/NuGetVersions.targets index 811e7e46718d..b3d36ea4d78c 100644 --- a/eng/NuGetVersions.targets +++ b/eng/NuGetVersions.targets @@ -1,4 +1,70 @@ + + true + + <_MicrosoftExtensionsConfigurationVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftExtensionsConfigurationAbstractionsVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftExtensionsConfigurationJsonVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftExtensionsDependencyInjectionVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftExtensionsDependencyInjectionAbstractionsVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftExtensionsFileProvidersAbstractionsVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftExtensionsHostingAbstractionsVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftExtensionsHttpVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftExtensionsLoggingAbstractionsVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftExtensionsLoggingVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftExtensionsLoggingConsoleVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftExtensionsLoggingDebugVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftExtensionsPrimitivesVersion>$(MicrosoftExtensionsPreviousPublishedPackageVersion) + <_MicrosoftAspNetCoreAuthorizationPackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_MicrosoftAspNetCoreAuthenticationGooglePackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_MicrosoftAspNetCoreAuthenticationFacebookPackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_MicrosoftAspNetCoreAuthenticationMicrosoftAccountPackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_MicrosoftAspNetCoreComponentsAnalyzersPackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_MicrosoftAspNetCoreComponentsFormsPackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_MicrosoftAspNetCoreComponentsPackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_MicrosoftAspNetCoreComponentsWebViewPackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_MicrosoftAspNetCoreComponentsWebPackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_MicrosoftAspNetCoreComponentsWebAssemblyPackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_MicrosoftAspNetCoreComponentsWebAssemblyServerPackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_MicrosoftAspNetCoreMetadataPackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_MicrosoftJSInteropPackageVersion>$(MicrosoftAspNetCorePreviousPublishedPackageVersion) + <_SystemTextJsonPackageVersion>$(MicrosoftNETCoreAppRefPreviousPublishedPackageVersion) + <_SystemTextEncodingsWebPackageVersion>$(MicrosoftNETCoreAppRefPreviousPublishedPackageVersion) + <_SystemCodeDomPackageVersion>$(MicrosoftNETCoreAppRefPreviousPublishedPackageVersion) + <_MicrosoftBclAsyncInterfacesPackageVersion>$(MicrosoftNETCoreAppRefPreviousPublishedPackageVersion) + + + <_MicrosoftExtensionsConfigurationVersion>$(MicrosoftExtensionsConfigurationVersion) + <_MicrosoftExtensionsConfigurationAbstractionsVersion>$(MicrosoftExtensionsConfigurationAbstractionsVersion) + <_MicrosoftExtensionsConfigurationJsonVersion>$(MicrosoftExtensionsConfigurationJsonVersion) + <_MicrosoftExtensionsDependencyInjectionVersion>$(MicrosoftExtensionsDependencyInjectionVersion) + <_MicrosoftExtensionsDependencyInjectionAbstractionsVersion>$(MicrosoftExtensionsDependencyInjectionAbstractionsVersion) + <_MicrosoftExtensionsFileProvidersAbstractionsVersion>$(MicrosoftExtensionsFileProvidersAbstractionsVersion) + <_MicrosoftExtensionsHostingAbstractionsVersion>$(MicrosoftExtensionsHostingAbstractionsVersion) + <_MicrosoftExtensionsHttpVersion>$(MicrosoftExtensionsHttpVersion) + <_MicrosoftExtensionsLoggingAbstractionsVersion>$(MicrosoftExtensionsLoggingAbstractionsVersion) + <_MicrosoftExtensionsLoggingVersion>$(MicrosoftExtensionsLoggingVersion) + <_MicrosoftExtensionsLoggingConsoleVersion>$(MicrosoftExtensionsLoggingConsoleVersion) + <_MicrosoftExtensionsLoggingDebugVersion>$(MicrosoftExtensionsLoggingDebugVersion) + <_MicrosoftExtensionsPrimitivesVersion>$(MicrosoftExtensionsPrimitivesVersion) + <_MicrosoftAspNetCoreAuthorizationPackageVersion>$(MicrosoftAspNetCoreAuthorizationPackageVersion) + <_MicrosoftAspNetCoreAuthenticationGooglePackageVersion>$(MicrosoftAspNetCoreAuthenticationGooglePackageVersion) + <_MicrosoftAspNetCoreAuthenticationFacebookPackageVersion>$(MicrosoftAspNetCoreAuthenticationFacebookPackageVersion) + <_MicrosoftAspNetCoreAuthenticationMicrosoftAccountPackageVersion>$(MicrosoftAspNetCoreAuthenticationMicrosoftAccountPackageVersion) + <_MicrosoftAspNetCoreComponentsAnalyzersPackageVersion>$(MicrosoftAspNetCoreComponentsAnalyzersPackageVersion) + <_MicrosoftAspNetCoreComponentsFormsPackageVersion>$(MicrosoftAspNetCoreComponentsFormsPackageVersion) + <_MicrosoftAspNetCoreComponentsPackageVersion>$(MicrosoftAspNetCoreComponentsPackageVersion) + <_MicrosoftAspNetCoreComponentsWebViewPackageVersion>$(MicrosoftAspNetCoreComponentsWebViewPackageVersion) + <_MicrosoftAspNetCoreComponentsWebPackageVersion>$(MicrosoftAspNetCoreComponentsWebPackageVersion) + <_MicrosoftAspNetCoreComponentsWebAssemblyPackageVersion>$(MicrosoftAspNetCoreComponentsWebAssemblyPackageVersion) + <_MicrosoftAspNetCoreComponentsWebAssemblyServerPackageVersion>$(MicrosoftAspNetCoreComponentsWebAssemblyServerPackageVersion) + <_MicrosoftAspNetCoreMetadataPackageVersion>$(MicrosoftAspNetCoreMetadataPackageVersion) + <_MicrosoftJSInteropPackageVersion>$(MicrosoftJSInteropPackageVersion) + <_SystemTextJsonPackageVersion>$(MicrosoftNETCoreAppRefPackageVersion) + <_SystemTextEncodingsWebPackageVersion>$(MicrosoftNETCoreAppRefPackageVersion) + <_SystemCodeDomPackageVersion>$(MicrosoftNETCoreAppRefPackageVersion) + <_MicrosoftBclAsyncInterfacesPackageVersion>$(MicrosoftNETCoreAppRefPackageVersion) + + + + + + + + + 10.0.100 10.0.0 - $(MicrosoftNETCoreAppRefPackageVersion) - $(MicrosoftNETCoreAppRefPackageVersion) - $(MicrosoftNETCoreAppRefPackageVersion) + + 10.0.0 + $(MicrosoftNETCoreAppRefPreviousPublishedPackageVersion) + $(MicrosoftNETCoreAppRefPreviousPublishedPackageVersion) + $(MicrosoftNETCoreAppRefPreviousPublishedPackageVersion) - $(MicrosoftNETCoreAppRefPackageVersion) + $(MicrosoftNETCoreAppRefPreviousPublishedPackageVersion) + 10.0.0 10.0.0 10.0.0 10.0.0 @@ -75,6 +78,7 @@ 1.3.2 1.0.3179.45 + 10.0.0 10.0.0 10.0.0 10.0.0 diff --git a/eng/scripts/update-cgmanifest.ps1 b/eng/scripts/update-cgmanifest.ps1 index 8bdcc4b82c00..6896a5765d7b 100644 --- a/eng/scripts/update-cgmanifest.ps1 +++ b/eng/scripts/update-cgmanifest.ps1 @@ -45,9 +45,9 @@ $packageVersionMappings = @{ 'coverlet.collector' = 'CoverletCollectorPackageVersion' # Microsoft Extensions packages - 'Microsoft.Extensions.Logging.Debug' = 'MicrosoftExtensionsLoggingDebugVersion' - 'Microsoft.Extensions.Configuration' = 'MicrosoftExtensionsConfigurationVersion' - 'Microsoft.Extensions.DependencyInjection' = 'MicrosoftExtensionsDependencyInjectionVersion' + 'Microsoft.Extensions.Logging.Debug' = 'MicrosoftExtensionsPreviousPublishedPackageVersion' + 'Microsoft.Extensions.Configuration' = 'MicrosoftExtensionsPreviousPublishedPackageVersion' + 'Microsoft.Extensions.DependencyInjection' = 'MicrosoftExtensionsPreviousPublishedPackageVersion' # Other packages 'Microsoft.WindowsAppSDK' = 'MicrosoftWindowsAppSDKPackageVersion' diff --git a/src/Compatibility/Core/tests/Compatibility.UnitTests/Compatibility.Core.UnitTests.csproj b/src/Compatibility/Core/tests/Compatibility.UnitTests/Compatibility.Core.UnitTests.csproj index 5426a2096a7a..f1aefa3745c8 100644 --- a/src/Compatibility/Core/tests/Compatibility.UnitTests/Compatibility.Core.UnitTests.csproj +++ b/src/Compatibility/Core/tests/Compatibility.UnitTests/Compatibility.Core.UnitTests.csproj @@ -3,6 +3,7 @@ $(_MauiDotNetTfm) Microsoft.Maui.Compatibility.Core.UnitTests false + true 0114;0672;0108;0067;0168;0169;0219;0612;0618;1998;4014 Microsoft.Maui.Compatibility.Core.UnitTests diff --git a/src/Controls/src/Build.Tasks/Controls.Build.Tasks.csproj b/src/Controls/src/Build.Tasks/Controls.Build.Tasks.csproj index 811be6cbc4ab..eea629b4f2d9 100644 --- a/src/Controls/src/Build.Tasks/Controls.Build.Tasks.csproj +++ b/src/Controls/src/Build.Tasks/Controls.Build.Tasks.csproj @@ -24,7 +24,7 @@ - + diff --git a/src/Controls/tests/Core.UnitTests/Controls.Core.UnitTests.csproj b/src/Controls/tests/Core.UnitTests/Controls.Core.UnitTests.csproj index 8c41c5ab5e37..e5870604c810 100644 --- a/src/Controls/tests/Core.UnitTests/Controls.Core.UnitTests.csproj +++ b/src/Controls/tests/Core.UnitTests/Controls.Core.UnitTests.csproj @@ -4,6 +4,7 @@ $(_MauiDotNetTfm) Microsoft.Maui.Controls.Core.UnitTests false + true 0114;0672;0108;0067;0168;0169;0219;0612;0618;1998 Microsoft.Maui.Controls.Core.UnitTests diff --git a/src/Controls/tests/ManualTests/Controls.ManualTests.csproj b/src/Controls/tests/ManualTests/Controls.ManualTests.csproj index cbaf2540695d..da8aee103c71 100644 --- a/src/Controls/tests/ManualTests/Controls.ManualTests.csproj +++ b/src/Controls/tests/ManualTests/Controls.ManualTests.csproj @@ -13,6 +13,7 @@ Exe true false + true Microsoft.Maui.ManualTests enable disable @@ -84,7 +85,7 @@ - + diff --git a/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj b/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj index c3b495e33147..59320d6fbaf8 100644 --- a/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj +++ b/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj @@ -6,6 +6,7 @@ Exe true true + true false enable diff --git a/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj b/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj index 443c5e8d898d..911411800d40 100644 --- a/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj +++ b/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj @@ -1,4 +1,7 @@ + + true + $(_MauiDotNetTfm) @@ -25,7 +28,7 @@ - + diff --git a/src/Core/tests/Benchmarks/Core.Benchmarks.csproj b/src/Core/tests/Benchmarks/Core.Benchmarks.csproj index 65428a29f330..84a5fa311d3d 100644 --- a/src/Core/tests/Benchmarks/Core.Benchmarks.csproj +++ b/src/Core/tests/Benchmarks/Core.Benchmarks.csproj @@ -4,6 +4,7 @@ Exe $(_MauiDotNetTfm) true + true $(InterceptorsPreviewNamespaces);Microsoft.Maui.Controls.Generated diff --git a/src/Core/tests/DeviceTests.Shared/Core.DeviceTests.Shared.csproj b/src/Core/tests/DeviceTests.Shared/Core.DeviceTests.Shared.csproj index b051c1241477..2c2b8e1a5d1c 100644 --- a/src/Core/tests/DeviceTests.Shared/Core.DeviceTests.Shared.csproj +++ b/src/Core/tests/DeviceTests.Shared/Core.DeviceTests.Shared.csproj @@ -4,6 +4,7 @@ $(MauiDeviceTestsPlatforms) true true + true Microsoft.Maui.DeviceTests Microsoft.Maui.DeviceTests.Shared @@ -18,7 +19,7 @@ - + diff --git a/src/Core/tests/UnitTests/Core.UnitTests.csproj b/src/Core/tests/UnitTests/Core.UnitTests.csproj index 9348f8b24121..8286da240fb7 100644 --- a/src/Core/tests/UnitTests/Core.UnitTests.csproj +++ b/src/Core/tests/UnitTests/Core.UnitTests.csproj @@ -5,6 +5,7 @@ Microsoft.Maui.UnitTests false true + true $(NoWarn);NU5128 + $(MicrosoftExtensionsPreviousPublishedPackageVersion) + * + $(MicrosoftAspNetCorePreviousPublishedPackageVersion) + * @@ -67,12 +71,10 @@ - _UpdateTemplateVersions;_UpdateTemplateDotFiles + TestDotNetPackageVersionSelection;_UpdateTemplateVersions;_UpdateTemplateDotFiles - + + ReplacementText="$(_MauiDotNetTfm);$(_MauiDotNetVersion);$(_MauiDotNetVersionMajor)000;$(MicrosoftExtensionsTemplatePackageVersion);$(MicrosoftAspNetCoreTemplatePackageVersion);$(MicrosoftAspNetCoreTemplatePackageVersion);$(MicrosoftAspNetCoreTemplatePackageVersion)" /> @@ -99,6 +101,55 @@ + + + <_DotNetPackageVersionSelection Include="Extensions=$(_MicrosoftExtensionsLoggingDebugVersion)" /> + <_DotNetPackageVersionSelection Include="AspNetCore=$(_MicrosoftAspNetCoreComponentsWebPackageVersion)" /> + <_DotNetPackageVersionSelection Include="Runtime=$(_SystemTextJsonPackageVersion)" /> + <_DotNetPackageVersionSelection Include="TemplateExtensions=$([MSBuild]::Escape('$(MicrosoftExtensionsTemplatePackageVersion)'))" /> + <_DotNetPackageVersionSelection Include="TemplateAspNetCore=$([MSBuild]::Escape('$(MicrosoftAspNetCoreTemplatePackageVersion)'))" /> + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/TestUtils/src/DeviceTests.Runners/TestUtils.DeviceTests.Runners.csproj b/src/TestUtils/src/DeviceTests.Runners/TestUtils.DeviceTests.Runners.csproj index 00d981b60a4a..faf6a7b0440e 100644 --- a/src/TestUtils/src/DeviceTests.Runners/TestUtils.DeviceTests.Runners.csproj +++ b/src/TestUtils/src/DeviceTests.Runners/TestUtils.DeviceTests.Runners.csproj @@ -1,4 +1,7 @@ + + true + $(MauiDeviceTestsPlatforms) @@ -22,7 +25,7 @@ - + diff --git a/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Microsoft.NET.Sdk.Maui.Manifest.csproj b/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Microsoft.NET.Sdk.Maui.Manifest.csproj index 2da34bbe6866..e4b948c5356d 100644 --- a/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Microsoft.NET.Sdk.Maui.Manifest.csproj +++ b/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Microsoft.NET.Sdk.Maui.Manifest.csproj @@ -45,14 +45,14 @@ <_VersionsToReplace Include="DotNetMauiManifestVersionBand" /> <_VersionsToReplace Include="DotNetAndroidManifestVersionBand" /> <_VersionsToReplace Include="DotNetMaciOSManifestVersionBand" /> - <_VersionsToReplace Include="MicrosoftAspNetCoreAuthorizationPackageVersion" /> - <_VersionsToReplace Include="MicrosoftAspNetCoreComponentsAnalyzersPackageVersion" /> - <_VersionsToReplace Include="MicrosoftAspNetCoreComponentsFormsPackageVersion" /> - <_VersionsToReplace Include="MicrosoftAspNetCoreComponentsPackageVersion" /> - <_VersionsToReplace Include="MicrosoftAspNetCoreComponentsWebPackageVersion" /> - <_VersionsToReplace Include="MicrosoftAspNetCoreComponentsWebViewPackageVersion" /> - <_VersionsToReplace Include="MicrosoftAspNetCoreMetadataPackageVersion" /> - <_VersionsToReplace Include="MicrosoftJSInteropPackageVersion" /> + <_VersionsToReplace Include="MicrosoftAspNetCoreAuthorizationPackageVersion" PropertyName="MicrosoftAspNetCorePreviousPublishedPackageVersion" /> + <_VersionsToReplace Include="MicrosoftAspNetCoreComponentsAnalyzersPackageVersion" PropertyName="MicrosoftAspNetCorePreviousPublishedPackageVersion" /> + <_VersionsToReplace Include="MicrosoftAspNetCoreComponentsFormsPackageVersion" PropertyName="MicrosoftAspNetCorePreviousPublishedPackageVersion" /> + <_VersionsToReplace Include="MicrosoftAspNetCoreComponentsPackageVersion" PropertyName="MicrosoftAspNetCorePreviousPublishedPackageVersion" /> + <_VersionsToReplace Include="MicrosoftAspNetCoreComponentsWebPackageVersion" PropertyName="MicrosoftAspNetCorePreviousPublishedPackageVersion" /> + <_VersionsToReplace Include="MicrosoftAspNetCoreComponentsWebViewPackageVersion" PropertyName="MicrosoftAspNetCorePreviousPublishedPackageVersion" /> + <_VersionsToReplace Include="MicrosoftAspNetCoreMetadataPackageVersion" PropertyName="MicrosoftAspNetCorePreviousPublishedPackageVersion" /> + <_VersionsToReplace Include="MicrosoftJSInteropPackageVersion" PropertyName="MicrosoftAspNetCorePreviousPublishedPackageVersion" /> <_VersionsToReplace Include="MicrosoftWindowsAppSDKPackageVersion" /> <_VersionsToReplace Include="MicrosoftWindowsSDKBuildToolsPackageVersion" /> <_VersionsToReplace Include="MicrosoftGraphicsWin2DPackageVersion" /> @@ -62,7 +62,9 @@ <_VersionsToReplace Include="AppiumXCUITestDriverVersion" /> <_VersionsToReplace Include="AppiumMac2DriverVersion" /> <_VersionsToReplace Include="AppiumUIAutomator2DriverVersion" /> - <_VersionsToReplace Update="@(_VersionsToReplace)" PropertyName="%(Identity)" /> + <_VersionsToReplace Update="@(_VersionsToReplace)"> + %(_VersionsToReplace.Identity) + <_VersionsToReplace Include="VERSION" PropertyName="PackageReferenceVersion" /> <_VersionsToReplace Include="MAUI_DOTNET_VERSION_MAJOR" PropertyName="_MauiDotNetVersionMajor" /> <_VersionsToReplace Include="MAUI_DOTNET_VERSION" PropertyName="_MauiDotNetVersion" />