Skip to content

Commit 6418c8f

Browse files
authored
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
1 parent 3ee23fb commit 6418c8f

File tree

6 files changed

+47
-12
lines changed

6 files changed

+47
-12
lines changed

eng/Dependencies.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ and are generated based on the last package release.
169169
<LatestPackageReference Include="Moq" />
170170
<LatestPackageReference Include="Newtonsoft.Json.Bson" />
171171
<LatestPackageReference Include="NSwag.ApiDescription.Client" />
172+
<LatestPackageReference Include="NuGet.Versioning" />
172173
<LatestPackageReference Include="Selenium.Support" />
173174
<LatestPackageReference Include="Selenium.WebDriver" />
174175
<LatestPackageReference Include="Selenium.WebDriver.ChromeDriver" />

eng/Versions.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@
205205
<MicrosoftWebAdministrationPackageVersion>11.1.0</MicrosoftWebAdministrationPackageVersion>
206206
<MicrosoftWebXdtPackageVersion>1.4.0</MicrosoftWebXdtPackageVersion>
207207
<SystemIdentityModelTokensJwtPackageVersion>6.7.1</SystemIdentityModelTokensJwtPackageVersion>
208+
<NuGetVersioningPackageVersion>5.7.0</NuGetVersioningPackageVersion>
208209
<!-- Packages from 2.1, 2.2, and 3.1 branches used for site extension build. -->
209210
<MicrosoftAspNetCoreAzureAppServicesSiteExtension21PackageVersion>2.1.1</MicrosoftAspNetCoreAzureAppServicesSiteExtension21PackageVersion>
210211
<MicrosoftAspNetCoreAzureAppServicesSiteExtension22PackageVersion>2.2.0</MicrosoftAspNetCoreAzureAppServicesSiteExtension22PackageVersion>

src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.csproj

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,14 +155,24 @@ This package is an internal implementation of the .NET Core SDK and is not meant
155155
DependsOnTargets="_ResolveTargetingPackContent"
156156
Inputs="$(MSBuildAllProjects)"
157157
Outputs="$(TargetDir)$(PackageConflictManifestFileName)">
158+
<PropertyGroup>
159+
<_PinnedNETCoreAppRuntimeVersion>$(MicrosoftNETCoreAppRuntimeVersion)</_PinnedNETCoreAppRuntimeVersion>
160+
<_PinnedNETCoreAppRuntimeVersion
161+
Condition=" '$(IsServicingBuild)' == 'true' ">$(_PinnedNETCoreAppRuntimeVersion.Split('.')[0]).$(_PinnedNETCoreAppRuntimeVersion.Split('.')[1]).0</_PinnedNETCoreAppRuntimeVersion>
162+
</PropertyGroup>
158163
<ItemGroup>
159-
<!-- Use package version for non-Extensions references -->
160-
<_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' " />
161-
162-
<!-- Pin version for extensions references -->
163-
<_AspNetCoreAppPackageOverrides Include="@(_SelectedExtensionsRefAssemblies->'%(FileName)|$(MicrosoftExtensionsInternalTransportPackageVersion)')" />
164-
165-
<_AspNetCoreAppPackageOverrides Include="@(AspNetCoreReferenceAssemblyPath->'%(FileName)|$(ReferencePackSharedFxVersion)')" Condition=" '%(AspNetCoreReferenceAssemblyPath.ReferenceSourceTarget)' == 'ProjectReference' " />
164+
<!-- Use package version for non-Extensions references. -->
165+
<_AspNetCoreAppPackageOverrides Include="@(AspNetCoreReferenceAssemblyPath->'%(NuGetPackageId)|%(NuGetPackageVersion)')"
166+
Condition="!Exists('$(RuntimeExtensionsReferenceDirectory)%(AspNetCoreReferenceAssemblyPath.NuGetPackageId).dll') AND
167+
'%(AspNetCoreReferenceAssemblyPath.NuGetPackageId)' != 'Microsoft.NETCore.App' AND
168+
'%(AspNetCoreReferenceAssemblyPath.NuGetPackageId)' != 'Microsoft.Extensions.Internal.Transport' AND
169+
'%(AspNetCoreReferenceAssemblyPath.NuGetSourceType)' == 'Package' " />
170+
171+
<!-- Use pinned NETCore.App version for Extensions references. -->
172+
<_AspNetCoreAppPackageOverrides Include="@(_SelectedExtensionsRefAssemblies->'%(FileName)|$(_PinnedNETCoreAppRuntimeVersion)')" />
173+
174+
<_AspNetCoreAppPackageOverrides Include="@(AspNetCoreReferenceAssemblyPath->'%(FileName)|$(ReferencePackSharedFxVersion)')"
175+
Condition=" '%(AspNetCoreReferenceAssemblyPath.ReferenceSourceTarget)' == 'ProjectReference' " />
166176
</ItemGroup>
167177

168178
<WriteLinesToFile

src/Framework/Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<PlatformManifestFileName>PlatformManifest.txt</PlatformManifestFileName>
88
<PlatformManifestOutputPath>$(ArtifactsObjDir)$(PlatformManifestFileName)</PlatformManifestOutputPath>
99

10-
<!-- Platform manifest and package override metatdata -->
10+
<!-- Platform manifest and package override metadata. -->
1111
<ReferencePackSharedFxVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).0</ReferencePackSharedFxVersion>
1212
<ReferencePackSharedFxVersion Condition="'$(VersionSuffix)' != ''">$(ReferencePackSharedFxVersion)-$(VersionSuffix)</ReferencePackSharedFxVersion>
1313
</PropertyGroup>

src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848

4949
<ItemGroup>
5050
<Reference Include="Newtonsoft.Json" />
51+
<Reference Include="NuGet.Versioning" />
5152
</ItemGroup>
5253

5354
<ItemGroup>

src/Framework/test/TargetingPackTests.cs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using System.Reflection.PortableExecutable;
1111
using System.Runtime.CompilerServices;
1212
using System.Xml.Linq;
13+
using NuGet.Versioning;
1314
using Xunit;
1415
using Xunit.Abstractions;
1516

@@ -143,25 +144,46 @@ public void PackageOverridesContainsCorrectEntries()
143144

144145
Assert.Equal(packageOverrideFileLines.Length, runtimeDependencies.Count + aspnetcoreDependencies.Count);
145146

146-
foreach (var entry in packageOverrideFileLines)
147+
// PackageOverrides versions should remain at Major.Minor.0 while servicing.
148+
var netCoreAppPackageVersion = TestData.GetMicrosoftNETCoreAppPackageVersion();
149+
Assert.True(
150+
NuGetVersion.TryParse(netCoreAppPackageVersion, out var parsedVersion),
151+
"MicrosoftNETCoreAppPackageVersion must be convertable to a NuGetVersion.");
152+
if (parsedVersion.Patch != 0 && !parsedVersion.IsPrerelease)
153+
{
154+
netCoreAppPackageVersion = $"{parsedVersion.Major}.{parsedVersion.Minor}.0";
155+
}
156+
157+
var aspNetCoreAppPackageVersion = TestData.GetReferencePackSharedFxVersion();
158+
Assert.True(
159+
NuGetVersion.TryParse(aspNetCoreAppPackageVersion, out parsedVersion),
160+
"ReferencePackSharedFxVersion must be convertable to a NuGetVersion.");
161+
if (parsedVersion.Patch != 0 && !parsedVersion.IsPrerelease)
162+
{
163+
aspNetCoreAppPackageVersion = $"{parsedVersion.Major}.{parsedVersion.Minor}.0";
164+
}
165+
166+
Assert.All(packageOverrideFileLines, entry =>
147167
{
148168
var packageOverrideParts = entry.Split("|");
169+
Assert.Equal(2, packageOverrideParts.Length);
170+
149171
var packageName = packageOverrideParts[0];
150172
var packageVersion = packageOverrideParts[1];
151173

152174
if (runtimeDependencies.Contains(packageName))
153175
{
154-
Assert.Equal(TestData.GetMicrosoftNETCoreAppPackageVersion(), packageVersion);
176+
Assert.Equal(netCoreAppPackageVersion, packageVersion);
155177
}
156178
else if (aspnetcoreDependencies.Contains(packageName))
157179
{
158-
Assert.Equal(TestData.GetReferencePackSharedFxVersion(), packageVersion);
180+
Assert.Equal(aspNetCoreAppPackageVersion, packageVersion);
159181
}
160182
else
161183
{
162184
Assert.True(false, $"{packageName} is not a recognized aspNetCore or runtime dependency");
163185
}
164-
}
186+
});
165187
}
166188

167189
[Fact]

0 commit comments

Comments
 (0)