Skip to content

Commit 2fa0212

Browse files
author
John Luo
authored
Fix package overrides (#21329)
* Fix package overrides * Add a test
1 parent 63415b7 commit 2fa0212

File tree

5 files changed

+78
-15
lines changed

5 files changed

+78
-15
lines changed

src/Framework/Directory.Build.props

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
<PlatformManifestFileName>PlatformManifest.txt</PlatformManifestFileName>
88
<PlatformManifestOutputPath>$(ArtifactsObjDir)$(PlatformManifestFileName)</PlatformManifestOutputPath>
99
<DisablePubternalApiCheck>true</DisablePubternalApiCheck>
10+
11+
<!-- Platform manifest and package override metatdata -->
12+
<ReferencePackSharedFxVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).0</ReferencePackSharedFxVersion>
13+
<ReferencePackSharedFxVersion Condition="'$(VersionSuffix)' != ''">$(ReferencePackSharedFxVersion)-$(VersionSuffix)</ReferencePackSharedFxVersion>
1014
</PropertyGroup>
1115

1216
<ItemGroup>

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

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,6 @@ This package is an internal implementation of the .NET Core SDK and is not meant
5050
<FrameworkListFileName>FrameworkList.xml</FrameworkListFileName>
5151
<FrameworkListOutputPath>$(ArtifactsObjDir)$(FrameworkListFileName)</FrameworkListOutputPath>
5252

53-
<!-- Platform manifest and package override metatdata -->
54-
<ReferencePackSharedFxVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).0</ReferencePackSharedFxVersion>
55-
<ReferencePackSharedFxVersion Condition="'$(VersionSuffix)' != ''">$(ReferencePackSharedFxVersion)-$(VersionSuffix)</ReferencePackSharedFxVersion>
56-
5753
<!-- Runtime extensions transport paths -->
5854
<RuntimeExtensionsReferenceDirectory>$(PkgMicrosoft_Extensions_Internal_Transport)\ref\$(TargetFramework)\</RuntimeExtensionsReferenceDirectory>
5955

@@ -120,12 +116,6 @@ This package is an internal implementation of the .NET Core SDK and is not meant
120116
<Output TaskParameter="JoinResult" ItemName="_ReferencedExtensionsRefAssemblies" />
121117
</JoinItems>
122118

123-
<!-- _DuplicatedExtensionsRefAssemblies represents ref assemblies that are present in Microsoft.Extensions.Internal.Transport package and also are built in this repo. -->
124-
<!-- This should be temporary while we migrate sources since there should be no duplication when sources are deleted from extensions. -->
125-
<JoinItems Left="@(_ReferencedExtensionsRefAssemblies)" Right="@(_ResolvedProjectReferencePaths)" LeftKey="Filename" RightKey="Filename" ItemSpecToUse="Left">
126-
<Output TaskParameter="JoinResult" ItemName="_DuplicatedExtensionsRefAssemblies" />
127-
</JoinItems>
128-
129119
<JoinItems Left="@(_ReferencedExtensionsRefAssemblies)" Right="@(ExternalAspNetCoreAppReference)" LeftKey="Filename" RightKey="Identity" ItemSpecToUse="Left">
130120
<Output TaskParameter="JoinResult" ItemName="_SelectedExtensionsRefs" />
131121
</JoinItems>
@@ -135,15 +125,12 @@ This package is an internal implementation of the .NET Core SDK and is not meant
135125
</JoinItems>
136126

137127
<ItemGroup>
138-
<!-- Do not exclude the ref assemblies that we built in this repo if it's also included in Microsoft.Extensions.Internal.Transport -->
139-
<_ReferencedExtensionsRefAssembliesToExclude Include="@(_ReferencedExtensionsRefAssemblies)" Exclude="@(_DuplicatedExtensionsRefAssemblies)" />
140-
141128
<!-- Exclude transitive external dependencies that are not directly referenced by projects in AspNetCore or Extensions -->
142129
<AspNetCoreReferenceAssemblyPath
143130
Include="@(ReferencePathWithRefAssemblies)"
144131
Condition="'%(ReferencePathWithRefAssemblies.IsReferenceAssembly)' != 'false'"
145132
Exclude="
146-
@(_ReferencedExtensionsRefAssembliesToExclude);
133+
@(_ReferencedExtensionsRefAssemblies);
147134
@(ReferencePathWithRefAssemblies->WithMetadataValue('NuGetPackageId', 'Microsoft.NETCore.App.Ref'));
148135
@(ReferencePathWithRefAssemblies->WithMetadataValue('NuGetPackageId', 'System.Security.Cryptography.Pkcs'));
149136
@(ReferencePathWithRefAssemblies->WithMetadataValue('NuGetPackageId', 'System.Drawing.Common'));
@@ -172,7 +159,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant
172159
<_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' " />
173160

174161
<!-- Pin version for extensions references -->
175-
<_AspNetCoreAppPackageOverrides Include="@(_SelectedExtensionsRefAssemblies->'%(FileName)|$(MicrosoftInternalExtensionsRefsPackageOverrideVersion)')" />
162+
<_AspNetCoreAppPackageOverrides Include="@(_SelectedExtensionsRefAssemblies->'%(FileName)|$(MicrosoftExtensionsInternalTransportPackageVersion)')" />
176163

177164
<_AspNetCoreAppPackageOverrides Include="@(AspNetCoreReferenceAssemblyPath->'%(FileName)|$(ReferencePackSharedFxVersion)')" Condition=" '%(AspNetCoreReferenceAssemblyPath.ReferenceSourceTarget)' == 'ProjectReference' AND '%(AspNetCoreReferenceAssemblyPath.IsReferenceAssembly)' == 'true' " />
178165
</ItemGroup>

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,28 @@
9090
<_Parameter2>@(_TargetingPackDependencies)</_Parameter2>
9191
</AssemblyAttribute>
9292

93+
<AspNetCoreTargetingPackDependencies
94+
Include="@(_TargetingPackDependencies)"
95+
Condition="'%(_TargetingPackDependencies.ReferenceSourceTarget)' == 'ProjectReference'" />
96+
<RuntimeTargetingPackDependencies
97+
Include="@(_TargetingPackDependencies)"
98+
Exclude="@(AspNetCoreTargetingPackDependencies)" />
99+
100+
<AssemblyAttribute Include="Microsoft.AspNetCore.TestData">
101+
<_Parameter1>AspNetCoreTargetingPackDependencies</_Parameter1>
102+
<_Parameter2>@(AspNetCoreTargetingPackDependencies->'%(FileName)')</_Parameter2>
103+
</AssemblyAttribute>
104+
105+
<AssemblyAttribute Include="Microsoft.AspNetCore.TestData">
106+
<_Parameter1>RuntimeTargetingPackDependencies</_Parameter1>
107+
<_Parameter2>@(RuntimeTargetingPackDependencies->'%(FileName)')</_Parameter2>
108+
</AssemblyAttribute>
109+
110+
<AssemblyAttribute Include="Microsoft.AspNetCore.TestData">
111+
<_Parameter1>ReferencePackSharedFxVersion</_Parameter1>
112+
<_Parameter2>$(ReferencePackSharedFxVersion)</_Parameter2>
113+
</AssemblyAttribute>
114+
93115
<AssemblyAttribute Include="Microsoft.AspNetCore.TestData">
94116
<_Parameter1>RepositoryCommit</_Parameter1>
95117
<_Parameter2>$(SourceRevisionId)</_Parameter2>

src/Framework/test/TargetingPackTests.cs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,50 @@ public TargetingPackTests(ITestOutputHelper output)
3232
_isTargetingPackBuilding = bool.Parse(TestData.GetTestDataValue("IsTargetingPackBuilding"));
3333
}
3434

35+
[Fact]
36+
public void PackageOverridesContainsCorrectEntries()
37+
{
38+
if (!_isTargetingPackBuilding)
39+
{
40+
return;
41+
}
42+
43+
var packageOverridePath = Path.Combine(_targetingPackRoot, "data", "PackageOverrides.txt");
44+
45+
AssertEx.FileExists(packageOverridePath);
46+
47+
var packageOverrideFileLines = File.ReadAllLines(packageOverridePath);
48+
var runtimeDependencies = TestData.GetRuntimeTargetingPackDependencies()
49+
.Split(';', StringSplitOptions.RemoveEmptyEntries)
50+
.ToHashSet();
51+
var aspnetcoreDependencies = TestData.GetAspNetCoreTargetingPackDependencies()
52+
.Split(';', StringSplitOptions.RemoveEmptyEntries)
53+
.ToHashSet();
54+
55+
Assert.Equal(packageOverrideFileLines.Length, runtimeDependencies.Count + aspnetcoreDependencies.Count);
56+
57+
foreach (var entry in packageOverrideFileLines)
58+
{
59+
var packageOverrideParts = entry.Split("|");
60+
var packageName = packageOverrideParts[0];
61+
var packageVersion = packageOverrideParts[1];
62+
63+
if (runtimeDependencies.Contains(packageName))
64+
{
65+
Assert.Equal(TestData.GetMicrosoftNETCoreAppPackageVersion(), packageVersion);
66+
}
67+
else if (aspnetcoreDependencies.Contains(packageName))
68+
{
69+
Assert.Equal(TestData.GetReferencePackSharedFxVersion(), packageVersion);
70+
}
71+
else
72+
{
73+
Assert.True(false, $"{packageName} is not a recognized aspNetCore or runtime dependency");
74+
}
75+
}
76+
}
77+
78+
3579
[Fact]
3680
public void AssembliesAreReferenceAssemblies()
3781
{

src/Framework/test/TestData.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public class TestData
1313

1414
public static string GetMicrosoftNETCoreAppPackageVersion() => GetTestDataValue("MicrosoftNETCoreAppRuntimeVersion");
1515

16+
public static string GetReferencePackSharedFxVersion() => GetTestDataValue("ReferencePackSharedFxVersion");
17+
1618
public static string GetRepositoryCommit() => GetTestDataValue("RepositoryCommit");
1719

1820
public static string GetSharedFxRuntimeIdentifier() => GetTestDataValue("TargetRuntimeIdentifier");
@@ -21,6 +23,10 @@ public class TestData
2123

2224
public static string GetTargetingPackDependencies() => GetTestDataValue("TargetingPackDependencies");
2325

26+
public static string GetRuntimeTargetingPackDependencies() => GetTestDataValue("RuntimeTargetingPackDependencies");
27+
28+
public static string GetAspNetCoreTargetingPackDependencies() => GetTestDataValue("AspNetCoreTargetingPackDependencies");
29+
2430
public static bool VerifyAncmBinary() => string.Equals(GetTestDataValue("VerifyAncmBinary"), "true", StringComparison.OrdinalIgnoreCase);
2531

2632
public static string GetTestDataValue(string key)

0 commit comments

Comments
 (0)