From 800e369ab245d607bd1d4c454e9246c9812e42da Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Mon, 14 Sep 2020 00:35:08 -0700 Subject: [PATCH] Pin PackageOverrides.txt Extensions versions at Major.Minor.0 in servicing - set the package version of Extensions assemblies using NETCore.App version - ignore Microsoft.Extensions.Internal.Transport package version - transport package has a non-stable version and isn't shipped - just got lucky this worked before versions stabilize - update test expectations when checking PackageOverrides.txt - use NuGet.Versioning to make this easier --- eng/Dependencies.props | 1 + eng/Versions.props | 1 + .../src/Microsoft.AspNetCore.App.Ref.csproj | 24 ++++++++++----- src/Framework/Directory.Build.props | 2 +- .../Microsoft.AspNetCore.App.UnitTests.csproj | 1 + src/Framework/test/TargetingPackTests.cs | 30 ++++++++++++++++--- 6 files changed, 47 insertions(+), 12 deletions(-) diff --git a/eng/Dependencies.props b/eng/Dependencies.props index d7d3a004aca7..62a7ac2e0f82 100644 --- a/eng/Dependencies.props +++ b/eng/Dependencies.props @@ -169,6 +169,7 @@ and are generated based on the last package release. + diff --git a/eng/Versions.props b/eng/Versions.props index 4166efc1eb64..9ab88a2fb1a9 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -205,6 +205,7 @@ 11.1.0 1.4.0 6.7.1 + 5.7.0 2.1.1 2.2.0 diff --git a/src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.csproj b/src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.csproj index 26b11b060369..184778716af9 100644 --- a/src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.csproj +++ b/src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.csproj @@ -155,14 +155,24 @@ This package is an internal implementation of the .NET Core SDK and is not meant DependsOnTargets="_ResolveTargetingPackContent" Inputs="$(MSBuildAllProjects)" Outputs="$(TargetDir)$(PackageConflictManifestFileName)"> + + <_PinnedNETCoreAppRuntimeVersion>$(MicrosoftNETCoreAppRuntimeVersion) + <_PinnedNETCoreAppRuntimeVersion + Condition=" '$(IsServicingBuild)' == 'true' ">$(_PinnedNETCoreAppRuntimeVersion.Split('.')[0]).$(_PinnedNETCoreAppRuntimeVersion.Split('.')[1]).0 + - - <_AspNetCoreAppPackageOverrides Include="@(AspNetCoreReferenceAssemblyPath->'%(NuGetPackageId)|%(NuGetPackageVersion)')" Condition="!Exists('$(RuntimeExtensionsReferenceDirectory)%(AspNetCoreReferenceAssemblyPath.NuGetPackageId).dll') AND '%(AspNetCoreReferenceAssemblyPath.NuGetPackageId)' != 'Microsoft.NETCore.App' AND '%(AspNetCoreReferenceAssemblyPath.NuGetPackageId)' != 'Microsoft.Extensions.Internal.Transport' AND '%(AspNetCoreReferenceAssemblyPath.NuGetSourceType)' == 'Package' " /> - - - <_AspNetCoreAppPackageOverrides Include="@(_SelectedExtensionsRefAssemblies->'%(FileName)|$(MicrosoftExtensionsInternalTransportPackageVersion)')" /> - - <_AspNetCoreAppPackageOverrides Include="@(AspNetCoreReferenceAssemblyPath->'%(FileName)|$(ReferencePackSharedFxVersion)')" Condition=" '%(AspNetCoreReferenceAssemblyPath.ReferenceSourceTarget)' == 'ProjectReference' " /> + + <_AspNetCoreAppPackageOverrides Include="@(AspNetCoreReferenceAssemblyPath->'%(NuGetPackageId)|%(NuGetPackageVersion)')" + Condition="!Exists('$(RuntimeExtensionsReferenceDirectory)%(AspNetCoreReferenceAssemblyPath.NuGetPackageId).dll') AND + '%(AspNetCoreReferenceAssemblyPath.NuGetPackageId)' != 'Microsoft.NETCore.App' AND + '%(AspNetCoreReferenceAssemblyPath.NuGetPackageId)' != 'Microsoft.Extensions.Internal.Transport' AND + '%(AspNetCoreReferenceAssemblyPath.NuGetSourceType)' == 'Package' " /> + + + <_AspNetCoreAppPackageOverrides Include="@(_SelectedExtensionsRefAssemblies->'%(FileName)|$(_PinnedNETCoreAppRuntimeVersion)')" /> + + <_AspNetCoreAppPackageOverrides Include="@(AspNetCoreReferenceAssemblyPath->'%(FileName)|$(ReferencePackSharedFxVersion)')" + Condition=" '%(AspNetCoreReferenceAssemblyPath.ReferenceSourceTarget)' == 'ProjectReference' " /> PlatformManifest.txt $(ArtifactsObjDir)$(PlatformManifestFileName) - + $(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).0 $(ReferencePackSharedFxVersion)-$(VersionSuffix) diff --git a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj index a225c92060dc..3a594e0f301f 100644 --- a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj +++ b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj @@ -48,6 +48,7 @@ + diff --git a/src/Framework/test/TargetingPackTests.cs b/src/Framework/test/TargetingPackTests.cs index d39f6dbbe485..928fd395b049 100644 --- a/src/Framework/test/TargetingPackTests.cs +++ b/src/Framework/test/TargetingPackTests.cs @@ -10,6 +10,7 @@ using System.Reflection.PortableExecutable; using System.Runtime.CompilerServices; using System.Xml.Linq; +using NuGet.Versioning; using Xunit; using Xunit.Abstractions; @@ -143,25 +144,46 @@ public void PackageOverridesContainsCorrectEntries() Assert.Equal(packageOverrideFileLines.Length, runtimeDependencies.Count + aspnetcoreDependencies.Count); - foreach (var entry in packageOverrideFileLines) + // PackageOverrides versions should remain at Major.Minor.0 while servicing. + var netCoreAppPackageVersion = TestData.GetMicrosoftNETCoreAppPackageVersion(); + Assert.True( + NuGetVersion.TryParse(netCoreAppPackageVersion, out var parsedVersion), + "MicrosoftNETCoreAppPackageVersion must be convertable to a NuGetVersion."); + if (parsedVersion.Patch != 0 && !parsedVersion.IsPrerelease) + { + netCoreAppPackageVersion = $"{parsedVersion.Major}.{parsedVersion.Minor}.0"; + } + + var aspNetCoreAppPackageVersion = TestData.GetReferencePackSharedFxVersion(); + Assert.True( + NuGetVersion.TryParse(aspNetCoreAppPackageVersion, out parsedVersion), + "ReferencePackSharedFxVersion must be convertable to a NuGetVersion."); + if (parsedVersion.Patch != 0 && !parsedVersion.IsPrerelease) + { + aspNetCoreAppPackageVersion = $"{parsedVersion.Major}.{parsedVersion.Minor}.0"; + } + + Assert.All(packageOverrideFileLines, entry => { var packageOverrideParts = entry.Split("|"); + Assert.Equal(2, packageOverrideParts.Length); + var packageName = packageOverrideParts[0]; var packageVersion = packageOverrideParts[1]; if (runtimeDependencies.Contains(packageName)) { - Assert.Equal(TestData.GetMicrosoftNETCoreAppPackageVersion(), packageVersion); + Assert.Equal(netCoreAppPackageVersion, packageVersion); } else if (aspnetcoreDependencies.Contains(packageName)) { - Assert.Equal(TestData.GetReferencePackSharedFxVersion(), packageVersion); + Assert.Equal(aspNetCoreAppPackageVersion, packageVersion); } else { Assert.True(false, $"{packageName} is not a recognized aspNetCore or runtime dependency"); } - } + }); } [Fact]