Skip to content

Commit 2ca40f3

Browse files
committed
Ensure transitive dependencies are properly resolved for inference
.NET 7.0 SDK changed from: ```xml <ResolvePackageDependencies ProjectPath="$(MSBuildProjectFullPath)" ProjectAssetsFile="$(ProjectAssetsFile)" ProjectLanguage="$(Language)" EmitLegacyAssetsFileItems="$(EmitLegacyAssetsFileItems)" TargetFramework="$(TargetFramework)" ContinueOnError="ErrorAndContinue"> <Output TaskParameter="PackageDefinitions" ItemName="PackageDefinitions" /> <Output TaskParameter="PackageDependencies" ItemName="PackageDependencies" /> <!-- These outputs only produced when EmitLegacyAssetsFileItems is true --> <Output TaskParameter="TargetDefinitions" ItemName="TargetDefinitions" /> <Output TaskParameter="FileDefinitions" ItemName="FileDefinitions" /> <Output TaskParameter="FileDependencies" ItemName="FileDependencies" /> </ResolvePackageDependencies> ``` to: ```xml <ResolvePackageDependencies ProjectPath="$(MSBuildProjectFullPath)" ProjectAssetsFile="$(ProjectAssetsFile)" ProjectLanguage="$(Language)" TargetFramework="$(TargetFramework)" ContinueOnError="ErrorAndContinue" Condition="'$(EmitLegacyAssetsFileItems)' == 'true'"> <Output TaskParameter="PackageDefinitions" ItemName="PackageDefinitions" /> <Output TaskParameter="PackageDependencies" ItemName="PackageDependencies" /> <Output TaskParameter="TargetDefinitions" ItemName="TargetDefinitions" /> <Output TaskParameter="FileDefinitions" ItemName="FileDefinitions" /> <Output TaskParameter="FileDependencies" ItemName="FileDependencies" /> </ResolvePackageDependencies> ``` Since the SDK now conditions the execution of the resolve to the value of `EmitLegacyAssetsFileItems`, we need to explicitly set it. Since this was likely done for performance reasons, only turn on when package inference is active, since we don't use that anywhere else.
1 parent ed1106f commit 2ca40f3

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

src/NuGetizer.Tasks/NuGetizer.Inference.targets

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ Copyright (c) .NET Foundation. All rights reserved.
3939

4040
<_OutputFullPath Condition="$([System.IO.Path]::IsPathRooted($(OutputPath)))">$(OutputPath)</_OutputFullPath>
4141
<_OutputFullPath Condition="'$(_OutputFullPath)' == ''">$(MSBuildProjectDirectory.TrimEnd('\'))\$(OutputPath)</_OutputFullPath>
42+
43+
<!-- Ensure built-in RunResolvePackageDependencies target emits stuff we need for inference of transitive dependencies -->
44+
<EmitLegacyAssetsFileItems>true</EmitLegacyAssetsFileItems>
4245
</PropertyGroup>
4346

4447
<PropertyGroup Label="Package Readme" Condition="'$(PackReadme)' == 'true' and '$(IsPackable)' == 'true'">

src/NuGetizer.Tests/InlineProjectTests.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -774,5 +774,31 @@ public void when_packing_dependencies_then_can_include_exclude_assets()
774774
ExcludeAssets = "build"
775775
}));
776776
}
777+
778+
[Fact]
779+
public void when_private_assets_then_packs_transitively()
780+
{
781+
var result = Builder.BuildProject(
782+
"""
783+
<Project Sdk="Microsoft.NET.Sdk">
784+
<PropertyGroup>
785+
<TargetFramework>net6.0</TargetFramework>
786+
<IsPackable>true</IsPackable>
787+
</PropertyGroup>
788+
789+
<ItemGroup>
790+
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" PrivateAssets="all" />
791+
</ItemGroup>
792+
</Project>
793+
""", output: output);
794+
795+
result.AssertSuccess(output);
796+
797+
Assert.Contains(result.Items, item => item.Matches(new
798+
{
799+
NuGetPackageId = "Microsoft.Extensions.Configuration.Abstractions",
800+
PackFolder = "Lib",
801+
}));
802+
}
777803
}
778804
}

0 commit comments

Comments
 (0)