Skip to content

Commit 963676a

Browse files
committed
Apply code review feedback
1 parent fb990e9 commit 963676a

File tree

4 files changed

+40
-11
lines changed

4 files changed

+40
-11
lines changed

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

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ public sealed class ResolvePackageAssets : TaskBase
8585
/// </summary>
8686
public bool DisableTransitiveProjectReferences { get; set; }
8787

88+
/// <summary>
89+
/// Disables FrameworkReferences from referenced projects or packages
90+
/// </summary>
91+
public bool DisableTransitiveFrameworkReferences { get; set; }
92+
8893
/// <summary>
8994
/// Do not add references to framework assemblies as specified by packages.
9095
/// </summary>
@@ -1110,11 +1115,36 @@ private void WriteTransitiveProjectReferences()
11101115

11111116
private void WriteFrameworkReferences()
11121117
{
1118+
if (_task.DisableTransitiveFrameworkReferences)
1119+
{
1120+
return;
1121+
}
1122+
1123+
// Currently there are only 2 different frameworks that we expect to
1124+
// show up as framework references, so use a list here instead of a
1125+
// HashSet
1126+
List<string> frameworkReferences = null;
1127+
11131128
foreach (var library in _runtimeTarget.Libraries)
11141129
{
11151130
foreach (var frameworkReference in library.FrameworkReferences)
11161131
{
1117-
WriteItem(frameworkReference, library);
1132+
if (frameworkReferences == null)
1133+
{
1134+
frameworkReferences = new List<string>();
1135+
}
1136+
if (!frameworkReferences.Contains(frameworkReference))
1137+
{
1138+
frameworkReferences.Add(frameworkReference);
1139+
}
1140+
}
1141+
}
1142+
1143+
if (frameworkReferences != null)
1144+
{
1145+
foreach (var frameworkReference in frameworkReferences)
1146+
{
1147+
WriteItem(frameworkReference);
11181148
}
11191149
}
11201150
}

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,15 +155,10 @@ Copyright (c) .NET Foundation. All rights reserved.
155155
</Target>
156156

157157
<Target Name="AddTransitiveFrameworkReferences" AfterTargets="ResolvePackageAssets"
158-
Condition="'@(TransitiveFrameworkReferences)' != ''" >
158+
Condition="'@(TransitiveFrameworkReference)' != ''" >
159159

160160
<ItemGroup>
161-
<!-- Deduplicate transitive framework references, and ignore any that were already directly
162-
referenced-->
163-
<_TransitiveFrameworkReferenceToResolve Include="@(TransitiveFrameworkReferences->Distinct())"/>
164-
<_TransitiveFrameworkReferenceToResolve Remove="@(FrameworkReference)" />
165-
166-
<FrameworkReference Include="@(_TransitiveFrameworkReferenceToResolve)" />
161+
<FrameworkReference Include="@(TransitiveFrameworkReference)" Exclude="@(FrameworkReference)"/>
167162
</ItemGroup>
168163

169164
</Target>

src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.PackageDependencyResolution.targets

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ Copyright (c) .NET Foundation. All rights reserved.
246246
DisableFrameworkAssemblies="$(DisableLockFileFrameworks)"
247247
DisableRuntimeTargets="$(DisableRuntimeTargets)"
248248
DisableTransitiveProjectReferences="$(DisableTransitiveProjectReferences)"
249+
DisableTransitiveFrameworkReferences="$(DisableTransitiveFrameworkReferences)"
249250
DotNetAppHostExecutableNameWithoutExtension="$(_DotNetAppHostExecutableNameWithoutExtension)"
250251
ShimRuntimeIdentifiers="@(_PackAsToolShimRuntimeIdentifiers)"
251252
EnsureRuntimePackageDependencies="$(EnsureRuntimePackageDependencies)"
@@ -259,7 +260,7 @@ Copyright (c) .NET Foundation. All rights reserved.
259260
<Output TaskParameter="ApphostsForShimRuntimeIdentifiers" ItemName="_ApphostsForShimRuntimeIdentifiersResolvePackageAssets" />
260261
<Output TaskParameter="ContentFilesToPreprocess" ItemName="_ContentFilesToPreprocess" />
261262
<Output TaskParameter="FrameworkAssemblies" ItemName="ResolvedFrameworkAssemblies" />
262-
<Output TaskParameter="FrameworkReferences" ItemName="TransitiveFrameworkReferences" />
263+
<Output TaskParameter="FrameworkReferences" ItemName="TransitiveFrameworkReference" />
263264
<Output TaskParameter="NativeLibraries" ItemName="NativeCopyLocalItems" />
264265
<Output TaskParameter="ResourceAssemblies" ItemName="ResourceCopyLocalItems" />
265266
<Output TaskParameter="RuntimeAssemblies" ItemName="RuntimeCopyLocalItems" />

src/Tests/Microsoft.NET.Build.Tests/GivenFrameworkReferences.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,10 @@ public void TargetingPackVersionCanBeSpecifiedOnFrameworkReference()
445445
resolvedVersions.AppHostPack["AppHost"].Should().Be("3.0.0-apphostversion");
446446
}
447447

448-
[Fact]
448+
// Transitive framework references require NuGet support, which isn't currently
449+
// in the full Framework MSBuild we use in CI, so only run these tests for
450+
// core MSBuild for now
451+
[CoreMSBuildOnlyFact]
449452
public void TransitiveFrameworkReferenceFromProjectReference()
450453
{
451454
var testProject = new TestProject()
@@ -487,7 +490,7 @@ public void TransitiveFrameworkReferenceFromProjectReference()
487490
runtimeFrameworkNames.Should().BeEquivalentTo("Microsoft.AspNetCore.App");
488491
}
489492

490-
[Fact]
493+
[CoreMSBuildOnlyFact]
491494
public void TransitiveFrameworkReferenceFromPackageReference()
492495
{
493496
var referencedPackage = new TestProject()

0 commit comments

Comments
 (0)