File tree Expand file tree Collapse file tree 4 files changed +40
-11
lines changed
Tasks/Microsoft.NET.Build.Tasks
Tests/Microsoft.NET.Build.Tests Expand file tree Collapse file tree 4 files changed +40
-11
lines changed Original file line number Diff line number Diff 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 }
Original file line number Diff line number Diff 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 >
Original file line number Diff line number Diff 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" />
Original file line number Diff line number Diff 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 ( )
You can’t perform that action at this time.
0 commit comments