Skip to content

Commit bb3f2a7

Browse files
committed
Pass TargetingPackRoot through to FrameworkPackages lookup
1 parent b615177 commit bb3f2a7

File tree

4 files changed

+35
-26
lines changed

4 files changed

+35
-26
lines changed

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

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ internal static void Register(params FrameworkPackages[] toRegister)
7373
}
7474
}
7575

76-
public static FrameworkPackages[] GetFrameworkPackages(NuGetFramework framework, string[] frameworkReferences)
76+
public static FrameworkPackages[] GetFrameworkPackages(NuGetFramework framework, string[] frameworkReferences, string targetingPackRoot)
7777
{
7878
var frameworkPackages = new List<FrameworkPackages>();
7979

@@ -94,7 +94,7 @@ public static FrameworkPackages[] GetFrameworkPackages(NuGetFramework framework,
9494
{
9595
// if we didn't predefine the package overrides, load them from the targeting pack
9696
// we might just leave this out since in future frameworks we'll have this functionality built into NuGet.Frameworks
97-
var frameworkPackagesFromPack = LoadFrameworkPackagesFromPack(framework, frameworkReference) ?? new FrameworkPackages(framework, frameworkReference);
97+
var frameworkPackagesFromPack = LoadFrameworkPackagesFromPack(framework, frameworkReference, targetingPackRoot) ?? new FrameworkPackages(framework, frameworkReference);
9898

9999
Register(frameworkPackagesFromPack);
100100

@@ -105,7 +105,7 @@ public static FrameworkPackages[] GetFrameworkPackages(NuGetFramework framework,
105105
return frameworkPackages.ToArray();
106106
}
107107

108-
private static FrameworkPackages LoadFrameworkPackagesFromPack(NuGetFramework framework, string frameworkName)
108+
private static FrameworkPackages LoadFrameworkPackagesFromPack(NuGetFramework framework, string frameworkName, string targetingPackRoot)
109109
{
110110
if (framework is null || framework.Framework != FrameworkConstants.FrameworkIdentifiers.NetCoreApp)
111111
{
@@ -121,33 +121,35 @@ private static FrameworkPackages LoadFrameworkPackagesFromPack(NuGetFramework fr
121121
new FrameworkPackages(framework, frameworkName) :
122122
new FrameworkPackages(framework, frameworkName, FrameworkPackagesByFramework[nearestFramework][frameworkKey]);
123123

124-
// packs location : %ProgramFiles%\dotnet\packs
125-
var packsFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "dotnet", "packs", frameworkName + ".Ref");
126-
if (Directory.Exists(packsFolder))
124+
if (!string.IsNullOrEmpty(targetingPackRoot))
127125
{
128-
var packVersionPattern = $"{framework.Version.Major}.{framework.Version.Minor}.*";
129-
var packDirectories = Directory.GetDirectories(packsFolder, packVersionPattern);
130-
var packageOverridesFile = packDirectories
131-
.Select(d => (Overrides: Path.Combine(d, "data", "PackageOverrides.txt"), Version: ParseVersion(Path.GetFileName(d))))
132-
.Where(d => File.Exists(d.Overrides))
133-
.OrderByDescending(d => d.Version)
134-
.FirstOrDefault().Overrides;
135-
136-
if (packageOverridesFile is not null)
126+
var packsFolder = Path.Combine(targetingPackRoot, frameworkName + ".Ref");
127+
if (Directory.Exists(packsFolder))
137128
{
138-
// Adapted from https://github.com/dotnet/sdk/blob/c3a8f72c3a5491c693ff8e49e7406136a12c3040/src/Tasks/Common/ConflictResolution/PackageOverride.cs#L52-L68
139-
var packageOverrides = File.ReadAllLines(packageOverridesFile);
140-
141-
foreach (var packageOverride in packageOverrides)
129+
var packVersionPattern = $"{framework.Version.Major}.{framework.Version.Minor}.*";
130+
var packDirectories = Directory.GetDirectories(packsFolder, packVersionPattern);
131+
var packageOverridesFile = packDirectories
132+
.Select(d => (Overrides: Path.Combine(d, "data", "PackageOverrides.txt"), Version: ParseVersion(Path.GetFileName(d))))
133+
.Where(d => File.Exists(d.Overrides))
134+
.OrderByDescending(d => d.Version)
135+
.FirstOrDefault().Overrides;
136+
137+
if (packageOverridesFile is not null)
142138
{
143-
var packageOverrideParts = packageOverride.Trim().Split('|');
139+
// Adapted from https://github.com/dotnet/sdk/blob/c3a8f72c3a5491c693ff8e49e7406136a12c3040/src/Tasks/Common/ConflictResolution/PackageOverride.cs#L52-L68
140+
var packageOverrides = File.ReadAllLines(packageOverridesFile);
144141

145-
if (packageOverrideParts.Length == 2)
142+
foreach (var packageOverride in packageOverrides)
146143
{
147-
var packageId = packageOverrideParts[0];
148-
var packageVersion = ParseVersion(packageOverrideParts[1]);
144+
var packageOverrideParts = packageOverride.Trim().Split('|');
145+
146+
if (packageOverrideParts.Length == 2)
147+
{
148+
var packageId = packageOverrideParts[0];
149+
var packageVersion = ParseVersion(packageOverrideParts[1]);
149150

150-
frameworkPackages.Packages[packageId] = packageVersion;
151+
frameworkPackages.Packages[packageId] = packageVersion;
152+
}
151153
}
152154
}
153155
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ public class GetPackagesToPrune : TaskBase
2222
[Required]
2323
public ITaskItem[] FrameworkReferences { get; set; }
2424

25+
public string TargetingPackRoot { get; set; }
26+
2527
[Output]
2628
public ITaskItem[] PackagesToPrune { get; set; }
2729

@@ -31,7 +33,7 @@ protected override void ExecuteCore()
3133

3234
Dictionary<string, NuGetVersion> packagesToPrune = new();
3335

34-
var frameworkPackages = FrameworkPackages.GetFrameworkPackages(nugetFramework, FrameworkReferences.Select(fr => fr.ItemSpec).ToArray())
36+
var frameworkPackages = FrameworkPackages.GetFrameworkPackages(nugetFramework, FrameworkReferences.Select(fr => fr.ItemSpec).ToArray(), TargetingPackRoot)
3537
.SelectMany(packages => packages);
3638

3739
foreach (var kvp in frameworkPackages)

src/Tasks/Microsoft.NET.Build.Tasks/Microsoft.NET.Build.Tasks.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,10 @@
119119
<UpToDateCheckInput Include="@(None)" />
120120
</ItemGroup>
121121

122+
<ItemGroup>
123+
<Folder Include="FrameworkPackages\" />
124+
</ItemGroup>
125+
122126
<Target Name="PrepareAdditionalFilesToLayout" BeforeTargets="AssignTargetPaths">
123127
<PropertyGroup>
124128
<_NugetBuildTasksPackPath>$(NuGetPackageRoot)nuget.build.tasks.pack\$(NuGetBuildTasksPackageVersion)</_NugetBuildTasksPackPath>

src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ Copyright (c) .NET Foundation. All rights reserved.
5656

5757
<GetPackagesToPrune TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)"
5858
TargetFrameworkVersion="$(_TargetFrameworkVersionWithoutV)"
59-
FrameworkReferences="@(FrameworkReference)">
59+
FrameworkReferences="@(FrameworkReference)"
60+
TargetingPackRoot="$(NetCoreTargetingPackRoot)">
6061
<Output TaskParameter="PackagesToPrune" ItemName="PrunePackageReference" />
6162
</GetPackagesToPrune>
6263

0 commit comments

Comments
 (0)