Pin PackageOverrides.txt Extensions versions at Major.Minor.0 in servicing (#25986)

- 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
This commit is contained in:
Doug Bunting 2020-09-17 21:02:46 -07:00 committed by GitHub
parent 3ee23fb771
commit 6418c8f78a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 45 additions and 10 deletions

View File

@ -169,6 +169,7 @@ and are generated based on the last package release.
<LatestPackageReference Include="Moq" /> <LatestPackageReference Include="Moq" />
<LatestPackageReference Include="Newtonsoft.Json.Bson" /> <LatestPackageReference Include="Newtonsoft.Json.Bson" />
<LatestPackageReference Include="NSwag.ApiDescription.Client" /> <LatestPackageReference Include="NSwag.ApiDescription.Client" />
<LatestPackageReference Include="NuGet.Versioning" />
<LatestPackageReference Include="Selenium.Support" /> <LatestPackageReference Include="Selenium.Support" />
<LatestPackageReference Include="Selenium.WebDriver" /> <LatestPackageReference Include="Selenium.WebDriver" />
<LatestPackageReference Include="Selenium.WebDriver.ChromeDriver" /> <LatestPackageReference Include="Selenium.WebDriver.ChromeDriver" />

View File

@ -205,6 +205,7 @@
<MicrosoftWebAdministrationPackageVersion>11.1.0</MicrosoftWebAdministrationPackageVersion> <MicrosoftWebAdministrationPackageVersion>11.1.0</MicrosoftWebAdministrationPackageVersion>
<MicrosoftWebXdtPackageVersion>1.4.0</MicrosoftWebXdtPackageVersion> <MicrosoftWebXdtPackageVersion>1.4.0</MicrosoftWebXdtPackageVersion>
<SystemIdentityModelTokensJwtPackageVersion>6.7.1</SystemIdentityModelTokensJwtPackageVersion> <SystemIdentityModelTokensJwtPackageVersion>6.7.1</SystemIdentityModelTokensJwtPackageVersion>
<NuGetVersioningPackageVersion>5.7.0</NuGetVersioningPackageVersion>
<!-- Packages from 2.1, 2.2, and 3.1 branches used for site extension build. --> <!-- Packages from 2.1, 2.2, and 3.1 branches used for site extension build. -->
<MicrosoftAspNetCoreAzureAppServicesSiteExtension21PackageVersion>2.1.1</MicrosoftAspNetCoreAzureAppServicesSiteExtension21PackageVersion> <MicrosoftAspNetCoreAzureAppServicesSiteExtension21PackageVersion>2.1.1</MicrosoftAspNetCoreAzureAppServicesSiteExtension21PackageVersion>
<MicrosoftAspNetCoreAzureAppServicesSiteExtension22PackageVersion>2.2.0</MicrosoftAspNetCoreAzureAppServicesSiteExtension22PackageVersion> <MicrosoftAspNetCoreAzureAppServicesSiteExtension22PackageVersion>2.2.0</MicrosoftAspNetCoreAzureAppServicesSiteExtension22PackageVersion>

View File

@ -155,14 +155,24 @@ This package is an internal implementation of the .NET Core SDK and is not meant
DependsOnTargets="_ResolveTargetingPackContent" DependsOnTargets="_ResolveTargetingPackContent"
Inputs="$(MSBuildAllProjects)" Inputs="$(MSBuildAllProjects)"
Outputs="$(TargetDir)$(PackageConflictManifestFileName)"> Outputs="$(TargetDir)$(PackageConflictManifestFileName)">
<PropertyGroup>
<_PinnedNETCoreAppRuntimeVersion>$(MicrosoftNETCoreAppRuntimeVersion)</_PinnedNETCoreAppRuntimeVersion>
<_PinnedNETCoreAppRuntimeVersion
Condition=" '$(IsServicingBuild)' == 'true' ">$(_PinnedNETCoreAppRuntimeVersion.Split('.')[0]).$(_PinnedNETCoreAppRuntimeVersion.Split('.')[1]).0</_PinnedNETCoreAppRuntimeVersion>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<!-- Use package version for non-Extensions references --> <!-- Use package version for non-Extensions references. -->
<_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="@(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' " />
<!-- Pin version for extensions references --> <!-- Use pinned NETCore.App version for Extensions references. -->
<_AspNetCoreAppPackageOverrides Include="@(_SelectedExtensionsRefAssemblies->'%(FileName)|$(MicrosoftExtensionsInternalTransportPackageVersion)')" /> <_AspNetCoreAppPackageOverrides Include="@(_SelectedExtensionsRefAssemblies->'%(FileName)|$(_PinnedNETCoreAppRuntimeVersion)')" />
<_AspNetCoreAppPackageOverrides Include="@(AspNetCoreReferenceAssemblyPath->'%(FileName)|$(ReferencePackSharedFxVersion)')" Condition=" '%(AspNetCoreReferenceAssemblyPath.ReferenceSourceTarget)' == 'ProjectReference' " /> <_AspNetCoreAppPackageOverrides Include="@(AspNetCoreReferenceAssemblyPath->'%(FileName)|$(ReferencePackSharedFxVersion)')"
Condition=" '%(AspNetCoreReferenceAssemblyPath.ReferenceSourceTarget)' == 'ProjectReference' " />
</ItemGroup> </ItemGroup>
<WriteLinesToFile <WriteLinesToFile

View File

@ -7,7 +7,7 @@
<PlatformManifestFileName>PlatformManifest.txt</PlatformManifestFileName> <PlatformManifestFileName>PlatformManifest.txt</PlatformManifestFileName>
<PlatformManifestOutputPath>$(ArtifactsObjDir)$(PlatformManifestFileName)</PlatformManifestOutputPath> <PlatformManifestOutputPath>$(ArtifactsObjDir)$(PlatformManifestFileName)</PlatformManifestOutputPath>
<!-- Platform manifest and package override metatdata --> <!-- Platform manifest and package override metadata. -->
<ReferencePackSharedFxVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).0</ReferencePackSharedFxVersion> <ReferencePackSharedFxVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).0</ReferencePackSharedFxVersion>
<ReferencePackSharedFxVersion Condition="'$(VersionSuffix)' != ''">$(ReferencePackSharedFxVersion)-$(VersionSuffix)</ReferencePackSharedFxVersion> <ReferencePackSharedFxVersion Condition="'$(VersionSuffix)' != ''">$(ReferencePackSharedFxVersion)-$(VersionSuffix)</ReferencePackSharedFxVersion>
</PropertyGroup> </PropertyGroup>

View File

@ -48,6 +48,7 @@
<ItemGroup> <ItemGroup>
<Reference Include="Newtonsoft.Json" /> <Reference Include="Newtonsoft.Json" />
<Reference Include="NuGet.Versioning" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -10,6 +10,7 @@ using System.Reflection.Metadata;
using System.Reflection.PortableExecutable; using System.Reflection.PortableExecutable;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Xml.Linq; using System.Xml.Linq;
using NuGet.Versioning;
using Xunit; using Xunit;
using Xunit.Abstractions; using Xunit.Abstractions;
@ -143,25 +144,46 @@ namespace Microsoft.AspNetCore
Assert.Equal(packageOverrideFileLines.Length, runtimeDependencies.Count + aspnetcoreDependencies.Count); 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("|"); var packageOverrideParts = entry.Split("|");
Assert.Equal(2, packageOverrideParts.Length);
var packageName = packageOverrideParts[0]; var packageName = packageOverrideParts[0];
var packageVersion = packageOverrideParts[1]; var packageVersion = packageOverrideParts[1];
if (runtimeDependencies.Contains(packageName)) if (runtimeDependencies.Contains(packageName))
{ {
Assert.Equal(TestData.GetMicrosoftNETCoreAppPackageVersion(), packageVersion); Assert.Equal(netCoreAppPackageVersion, packageVersion);
} }
else if (aspnetcoreDependencies.Contains(packageName)) else if (aspnetcoreDependencies.Contains(packageName))
{ {
Assert.Equal(TestData.GetReferencePackSharedFxVersion(), packageVersion); Assert.Equal(aspNetCoreAppPackageVersion, packageVersion);
} }
else else
{ {
Assert.True(false, $"{packageName} is not a recognized aspNetCore or runtime dependency"); Assert.True(false, $"{packageName} is not a recognized aspNetCore or runtime dependency");
} }
} });
} }
[Fact] [Fact]