Skip to content

Commit fd1a5b4

Browse files
authored
Generate PlatformManifest and package conflict overrides for Microsoft.AspNetCore.App (#4072)
This generates additional metadata for the .NET Core SDK to resolve conflicts between Microsoft.AspNetCore.App and PackageReferences which contain the same assemblies.
1 parent fb055cd commit fd1a5b4

15 files changed

+253
-40
lines changed

.azure/pipelines/fast-pr-validation.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
# Don't run CI for this config
2+
trigger: none
13

2-
trigger:
3-
- master
4-
- release/*
4+
# Run PR validation on all branches
5+
pr:
6+
branches:
7+
include:
8+
- '*'
59

610
jobs:
711
- template: jobs/default-build.yml

build/dependencies.props

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<!-- MicrosoftNETCoreApp30PackageVersion is assigned at the bottom so it can automatically pick up MicrosoftNETCoreAppPackageVersion in an orchestrated build. -->
77
<MicrosoftNETCoreAppPackageVersion>3.0.0-preview1-26907-05</MicrosoftNETCoreAppPackageVersion>
88
<MicrosoftNETCoreDotNetAppHostPackageVersion>3.0.0-preview1-26907-05</MicrosoftNETCoreDotNetAppHostPackageVersion>
9+
<MicrosoftDotNetPlatformAbstractionsPackageVersion>3.0.0-preview1-26907-05</MicrosoftDotNetPlatformAbstractionsPackageVersion>
910
<MicrosoftWin32RegistryPackageVersion>4.6.0-preview1-26907-04</MicrosoftWin32RegistryPackageVersion>
1011
<SystemBuffersPackageVersion>4.6.0-preview1-26907-04</SystemBuffersPackageVersion>
1112
<SystemCollectionsImmutablePackageVersion>1.6.0-preview1-26907-04</SystemCollectionsImmutablePackageVersion>
@@ -21,10 +22,12 @@
2122
<SystemReflectionMetadataPackageVersion>1.7.0-preview1-26907-04</SystemReflectionMetadataPackageVersion>
2223
<SystemRuntimeCompilerServicesUnsafePackageVersion>4.6.0-preview1-26907-04</SystemRuntimeCompilerServicesUnsafePackageVersion>
2324
<SystemSecurityCryptographyCngPackageVersion>4.6.0-preview1-26907-04</SystemSecurityCryptographyCngPackageVersion>
25+
<SystemSecurityCryptographyPkcsPackageVersion>4.6.0-preview1-26907-04</SystemSecurityCryptographyPkcsPackageVersion>
2426
<SystemSecurityCryptographyXmlPackageVersion>4.6.0-preview1-26907-04</SystemSecurityCryptographyXmlPackageVersion>
2527
<SystemSecurityPermissionsPackageVersion>4.6.0-preview1-26907-04</SystemSecurityPermissionsPackageVersion>
2628
<SystemSecurityPrincipalWindowsPackageVersion>4.6.0-preview1-26907-04</SystemSecurityPrincipalWindowsPackageVersion>
2729
<SystemServiceProcessServiceControllerPackageVersion>4.6.0-preview1-26907-04</SystemServiceProcessServiceControllerPackageVersion>
30+
<SystemTextEncodingCodePagesPackageVersion>4.6.0-preview1-26907-04</SystemTextEncodingCodePagesPackageVersion>
2831
<SystemTextEncodingsWebPackageVersion>4.6.0-preview1-26907-04</SystemTextEncodingsWebPackageVersion>
2932
<SystemThreadingChannelsPackageVersion>4.6.0-preview1-26907-04</SystemThreadingChannelsPackageVersion>
3033
<SystemThreadingTasksDataflowPackageVersion>4.10.0-preview1-26907-04</SystemThreadingTasksDataflowPackageVersion>
@@ -170,8 +173,12 @@
170173
<MicrosoftDotNetProjectModelPackageVersion>1.0.0-rc3-003121</MicrosoftDotNetProjectModelPackageVersion>
171174
<MicrosoftExtensionsPlatformAbstractionsPackageVersion>1.1.0</MicrosoftExtensionsPlatformAbstractionsPackageVersion>
172175
<MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>3.19.8</MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>
176+
<MicrosoftIdentityModelJsonWebTokensPackageVersion>5.3.0</MicrosoftIdentityModelJsonWebTokensPackageVersion>
177+
<MicrosoftIdentityModelLoggingPackageVersion>5.3.0</MicrosoftIdentityModelLoggingPackageVersion>
173178
<MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>5.3.0</MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>
179+
<MicrosoftIdentityModelProtocolsPackageVersion>5.3.0</MicrosoftIdentityModelProtocolsPackageVersion>
174180
<MicrosoftIdentityModelProtocolsWsFederationPackageVersion>5.3.0</MicrosoftIdentityModelProtocolsWsFederationPackageVersion>
181+
<MicrosoftIdentityModelTokensPackageVersion>5.3.0</MicrosoftIdentityModelTokensPackageVersion>
175182
<MicrosoftInternalAspNetCoreH2SpecAllPackageVersion>2.1.1</MicrosoftInternalAspNetCoreH2SpecAllPackageVersion>
176183
<MicrosoftNETCoreApp10PackageVersion>1.0.12</MicrosoftNETCoreApp10PackageVersion>
177184
<MicrosoftNETCoreApp11PackageVersion>1.1.9</MicrosoftNETCoreApp11PackageVersion>

build/external-dependencies.props

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,12 @@
136136
<ExternalDependency Include="Microsoft.DiaSymReader.Native" Version="$(MicrosoftDiaSymReaderNativePackageVersion)" />
137137
<ExternalDependency Include="Microsoft.Extensions.DependencyModel" Version="$(MicrosoftExtensionsDependencyModelPackageVersion)" />
138138
<ExternalDependency Include="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="$(MicrosoftIdentityModelClientsActiveDirectoryPackageVersion)" />
139+
<ExternalDependency Include="Microsoft.IdentityModel.JsonWebTokens" Version="$(MicrosoftIdentityModelJsonWebTokensPackageVersion)" />
140+
<ExternalDependency Include="Microsoft.IdentityModel.Logging" Version="$(MicrosoftIdentityModelLoggingPackageVersion)" />
139141
<ExternalDependency Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="$(MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion)" />
140142
<ExternalDependency Include="Microsoft.IdentityModel.Protocols.WsFederation" Version="$(MicrosoftIdentityModelProtocolsWsFederationPackageVersion)" />
143+
<ExternalDependency Include="Microsoft.IdentityModel.Protocols" Version="$(MicrosoftIdentityModelProtocolsPackageVersion)" />
144+
<ExternalDependency Include="Microsoft.IdentityModel.Tokens" Version="$(MicrosoftIdentityModelTokensPackageVersion)" />
141145
<ExternalDependency Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
142146

143147
<!-- Multiple versions of this package required to support all netcoreapp versions -->
@@ -154,6 +158,7 @@
154158
<ExternalDependency Include="Microsoft.NETCore.DotNetAppHost" Version="$(MicrosoftNETCoreDotNetAppHost21PackageVersion)" VariableName="MicrosoftNETCoreDotNetAppHost21PackageVersion" />
155159
<ExternalDependency Include="Microsoft.NETCore.DotNetAppHost" Version="$(MicrosoftNETCoreDotNetAppHost22PackageVersion)" VariableName="MicrosoftNETCoreDotNetAppHost22PackageVersion" />
156160
<ExternalDependency Include="Microsoft.NETCore.DotNetAppHost" Version="$(MicrosoftNETCoreDotNetAppHostPackageVersion)" />
161+
<ExternalDependency Include="Microsoft.DotNet.PlatformAbstractions" Version="$(MicrosoftDotNetPlatformAbstractionsPackageVersion)" />
157162

158163
<ExternalDependency Include="Microsoft.NETCore.Windows.ApiSets" Version="$(MicrosoftNETCoreWindowsApiSetsPackageVersion)" />
159164
<ExternalDependency Include="Microsoft.NETFramework.ReferenceAssemblies" Version="$(MicrosoftNETFrameworkReferenceAssembliesPackageVersion)" />
@@ -229,10 +234,12 @@
229234
<ExternalDependency Include="System.Runtime.CompilerServices.Unsafe" Version="$(SystemRuntimeCompilerServicesUnsafePackageVersion)" />
230235
<ExternalDependency Include="System.Runtime.InteropServices.RuntimeInformation" Version="$(SystemRuntimeInteropServicesRuntimeInformationPackageVersion)" />
231236
<ExternalDependency Include="System.Security.Cryptography.Cng" Version="$(SystemSecurityCryptographyCngPackageVersion)" />
237+
<ExternalDependency Include="System.Security.Cryptography.Pkcs" Version="$(SystemSecurityCryptographyPkcsPackageVersion)" />
232238
<ExternalDependency Include="System.Security.Cryptography.Xml" Version="$(SystemSecurityCryptographyXmlPackageVersion)" />
233239
<ExternalDependency Include="System.Security.Permissions" Version="$(SystemSecurityPermissionsPackageVersion)" />
234240
<ExternalDependency Include="System.Security.Principal.Windows" Version="$(SystemSecurityPrincipalWindowsPackageVersion)" />
235241
<ExternalDependency Include="System.ServiceProcess.ServiceController" Version="$(SystemServiceProcessServiceControllerPackageVersion)" />
242+
<ExternalDependency Include="System.Text.Encoding.CodePages" Version="$(SystemTextEncodingCodePagesPackageVersion)" />
236243
<ExternalDependency Include="System.Text.Encodings.Web" Version="$(SystemTextEncodingsWebPackageVersion)" />
237244
<ExternalDependency Include="System.Threading.Channels" Version="$(SystemThreadingChannelsPackageVersion)" />
238245
<ExternalDependency Include="System.Threading.Tasks.Dataflow" Version="$(SystemThreadingTasksDataflowPackageVersion)" />

build/tasks/ProcessSharedFrameworkDeps.cs renamed to build/tasks/GenerateSharedFrameworkMetadataFiles.cs

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
namespace RepoTasks
1616
{
17-
public class ProcessSharedFrameworkDeps : Task
17+
public class GenerateSharedFrameworkMetadataFiles : Task
1818
{
1919
[Required]
2020
public string AssetsFilePath { get; set; }
@@ -23,7 +23,7 @@ public class ProcessSharedFrameworkDeps : Task
2323
public string DepsFilePath { get; set; }
2424

2525
[Required]
26-
public string OutputPath { get; set; }
26+
public string DepsFileOutputPath { get; set; }
2727

2828
[Required]
2929
public string TargetFramework { get; set; }
@@ -37,6 +37,9 @@ public class ProcessSharedFrameworkDeps : Task
3737
[Required]
3838
public string BaseRuntimeIdentifier { get; set; }
3939

40+
[Required]
41+
public string PlatformManifestOutputPath { get; set; }
42+
4043
public override bool Execute()
4144
{
4245
ExecuteCore();
@@ -65,27 +68,38 @@ private void ExecuteCore()
6568
var runtimeFiles = new List<RuntimeFile>();
6669
var nativeFiles = new List<RuntimeFile>();
6770
var resourceAssemblies = new List<ResourceAssembly>();
71+
var platformManifest = new List<string>();
6872

6973
foreach (var library in context.RuntimeLibraries)
7074
{
7175
foreach (var file in library.RuntimeAssemblyGroups.SelectMany(g => g.RuntimeFiles))
7276
{
73-
var path = $"runtimes/{context.Target.Runtime}/lib/{TargetFramework}/{Path.GetFileName(file.Path)}";
77+
var fileName = Path.GetFileName(file.Path);
78+
var path = $"runtimes/{context.Target.Runtime}/lib/{TargetFramework}/{fileName}";
7479
runtimeFiles.Add(
7580
new RuntimeFile(
7681
path,
7782
file.AssemblyVersion,
7883
file.FileVersion));
84+
85+
platformManifest.Add($"{fileName}|{FrameworkName}|{file.AssemblyVersion}|{file.FileVersion}");
7986
}
8087

8188
foreach (var file in library.NativeLibraryGroups.SelectMany(g => g.RuntimeFiles))
8289
{
83-
var path = $"runtimes/{context.Target.Runtime}/native/{Path.GetFileName(file.Path)}";
90+
var fileName = Path.GetFileName(file.Path);
91+
var path = $"runtimes/{context.Target.Runtime}/native/{fileName}";
8492
nativeFiles.Add(
8593
new RuntimeFile(
8694
path,
8795
file.AssemblyVersion,
8896
file.FileVersion));
97+
98+
if (!Version.TryParse(file.FileVersion, out var fileVersion))
99+
{
100+
fileVersion = new Version(0, 0, 0, 0);
101+
}
102+
platformManifest.Add($"{fileName}|{FrameworkName}||{fileVersion}");
89103
}
90104

91105
resourceAssemblies.AddRange(
@@ -126,7 +140,12 @@ private void ExecuteCore()
126140
expandedGraph
127141
);
128142

129-
using (var depsStream = File.Create(OutputPath))
143+
Directory.CreateDirectory(Path.GetDirectoryName(PlatformManifestOutputPath));
144+
Directory.CreateDirectory(Path.GetDirectoryName(DepsFileOutputPath));
145+
146+
File.WriteAllLines(PlatformManifestOutputPath, platformManifest.OrderBy(n => n));
147+
148+
using (var depsStream = File.Create(DepsFileOutputPath))
130149
{
131150
new DependencyContextWriter().Write(context, depsStream);
132151
}

build/tasks/RepoTasks.tasks

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<UsingTask TaskName="RepoTasks.GetDocXmlFiles" AssemblyFile="$(_RepoTaskAssembly)" />
1111
<UsingTask TaskName="RepoTasks.JoinItems" AssemblyFile="$(_RepoTaskAssembly)" />
1212
<UsingTask TaskName="RepoTasks.OrderBy" AssemblyFile="$(_RepoTaskAssembly)" />
13-
<UsingTask TaskName="RepoTasks.ProcessSharedFrameworkDeps" AssemblyFile="$(_RepoTaskAssembly)" />
13+
<UsingTask TaskName="RepoTasks.GenerateSharedFrameworkMetadataFiles" AssemblyFile="$(_RepoTaskAssembly)" />
1414
<UsingTask TaskName="RepoTasks.PublishToAzureBlob" AssemblyFile="$(_RepoTaskAssembly)" />
1515

1616
<!-- tools from dotnet-buildtools -->

modules/HttpClientFactory

0 commit comments

Comments
 (0)