Skip to content

Commit 27f6210

Browse files
authored
Merge pull request #3459 from dsplaisted/preferredpackages
Calculate PackageConflictPreferredPackages from KnownFrameworkReference items
2 parents c2628eb + d090211 commit 27f6210

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

src/Tasks/Common/MetadataKeys.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ internal static class MetadataKeys
7777
public const string TargetPath = "TargetPath";
7878
public const string CopyLocal = "CopyLocal";
7979

80+
// Targeting packs
81+
public const string PackageConflictPreferredPackages = "PackageConflictPreferredPackages";
82+
8083
// Content files
8184
public const string PPOutputPath = "PPOutputPath";
8285
public const string CodeLanguage = "CodeLanguage";

src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,23 @@ protected override void ExecuteCore()
108108
continue;
109109
}
110110

111+
List<string> preferredPackages = new List<string>();
112+
preferredPackages.Add(knownFrameworkReference.TargetingPackName);
113+
114+
var knownFrameworkReferenceRuntimePackRuntimeIdentifiers = knownFrameworkReference.RuntimePackRuntimeIdentifiers.Split(';');
115+
foreach (var runtimeIdentifier in knownFrameworkReferenceRuntimePackRuntimeIdentifiers)
116+
{
117+
foreach (var runtimePackNamePattern in knownFrameworkReference.RuntimePackNamePatterns.Split(';'))
118+
{
119+
string runtimePackName = runtimePackNamePattern.Replace("**RID**", runtimeIdentifier);
120+
preferredPackages.Add(runtimePackName);
121+
}
122+
}
123+
111124
// Get the path of the targeting pack in the targeting pack root (e.g. dotnet/ref)
112125
TaskItem targetingPack = new TaskItem(knownFrameworkReference.Name);
113126
targetingPack.SetMetadata(MetadataKeys.PackageName, knownFrameworkReference.TargetingPackName);
127+
targetingPack.SetMetadata(MetadataKeys.PackageConflictPreferredPackages, string.Join(";", preferredPackages));
114128

115129
string targetingPackVersion = null;
116130
if (frameworkReference != null)

src/Tasks/Microsoft.NET.Build.Tasks/ResolveTargetingPackAssets.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ protected override void ExecuteCore()
4545
List<TaskItem> platformManifests = new List<TaskItem>();
4646
PackageConflictPreferredPackages = string.Empty;
4747
List<TaskItem> packageConflictOverrides = new List<TaskItem>();
48+
List<string> preferredPackages = new List<string>();
4849

4950
var resolvedTargetingPacks = ResolvedTargetingPacks.ToDictionary(item => item.ItemSpec, StringComparer.OrdinalIgnoreCase);
5051

@@ -100,12 +101,7 @@ protected override void ExecuteCore()
100101
packageConflictOverrides.Add(CreatePackageOverride(targetingPack.GetMetadata(MetadataKeys.PackageName), packageOverridesPath));
101102
}
102103

103-
if (targetingPack.ItemSpec.Equals("Microsoft.NETCore.App", StringComparison.OrdinalIgnoreCase))
104-
{
105-
// Hardcode this for now. Once the targeting pack has PackageOverrides.txt, then delete this code
106-
// https://github.com/dotnet/cli/issues/10581
107-
PackageConflictPreferredPackages = "Microsoft.NETCore.App;runtime.linux-x64.Microsoft.NETCore.App;runtime.linux-x64.Microsoft.NETCore.App;runtime.linux-musl-x64.Microsoft.NETCore.App;runtime.linux-musl-x64.Microsoft.NETCore.App;runtime.rhel.6-x64.Microsoft.NETCore.App;runtime.rhel.6-x64.Microsoft.NETCore.App;runtime.osx-x64.Microsoft.NETCore.App;runtime.osx-x64.Microsoft.NETCore.App;runtime.freebsd-x64.Microsoft.NETCore.App;runtime.freebsd-x64.Microsoft.NETCore.App;runtime.win-x86.Microsoft.NETCore.App;runtime.win-x86.Microsoft.NETCore.App;runtime.win-arm.Microsoft.NETCore.App;runtime.win-arm.Microsoft.NETCore.App;runtime.win-arm64.Microsoft.NETCore.App;runtime.win-arm64.Microsoft.NETCore.App;runtime.linux-arm.Microsoft.NETCore.App;runtime.linux-arm.Microsoft.NETCore.App;runtime.linux-arm64.Microsoft.NETCore.App;runtime.linux-arm64.Microsoft.NETCore.App;runtime.tizen.4.0.0-armel.Microsoft.NETCore.App;runtime.tizen.4.0.0-armel.Microsoft.NETCore.App;runtime.tizen.5.0.0-armel.Microsoft.NETCore.App;runtime.tizen.5.0.0-armel.Microsoft.NETCore.App;runtime.win-x64.Microsoft.NETCore.App;runtime.win-x64.Microsoft.NETCore.App";
108-
}
104+
preferredPackages.AddRange(targetingPack.GetMetadata(MetadataKeys.PackageConflictPreferredPackages).Split(';'));
109105
}
110106
}
111107
}
@@ -121,6 +117,7 @@ protected override void ExecuteCore()
121117

122118
PlatformManifests = platformManifests.ToArray();
123119
PackageConflictOverrides = packageConflictOverrides.ToArray();
120+
PackageConflictPreferredPackages = string.Join(";", preferredPackages);
124121
}
125122

126123
// Get distinct items based on case-insensitive ItemSpec comparison

0 commit comments

Comments
 (0)