Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

Commit a7740c7

Browse files
committed
Add support for extending package metadata item
This allows arbitrary additional metadata to be added to the package metadata item for other purpose. Fixes NuGet/Home#5387
1 parent ae41a03 commit a7740c7

File tree

3 files changed

+35
-9
lines changed

3 files changed

+35
-9
lines changed

src/Build/NuGet.Build.Packaging.Tasks/NuGet.Build.Packaging.targets

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,8 @@ Copyright (c) .NET Foundation. All rights reserved.
188188
<PropertyGroup>
189189
<GetPackageContentsDependsOn>
190190
$(GetPackageContentsDependsOn);
191-
GetPackageTargetPath
191+
GetPackageTargetPath;
192+
_AddPackageManifest
192193
</GetPackageContentsDependsOn>
193194
<GetPackageContentsDependsOn Condition="'$(IncludeProjectReferencesInPackage)' == 'true'">
194195
$(GetPackageContentsDependsOn);
@@ -197,15 +198,7 @@ Copyright (c) .NET Foundation. All rights reserved.
197198
</PropertyGroup>
198199

199200
<Target Name="GetPackageContents" DependsOnTargets="$(GetPackageContentsDependsOn)" Returns="@(_PackageContent)">
200-
<!-- If packaging the project, provide the metadata as a non-file item -->
201201
<ItemGroup>
202-
<PackageFile Include="@(PackageTargetPath->'%(Id)')" Condition="'$(IsPackable)' == 'true'">
203-
<Kind>Metadata</Kind>
204-
<PackageId>$(PackageId)</PackageId>
205-
<Platform>$(Platform)</Platform>
206-
<TargetFrameworkMoniker Condition="'$(IsPackagingProject)' != 'true'">$(TargetFrameworkMoniker)</TargetFrameworkMoniker>
207-
</PackageFile>
208-
209202
<!--
210203
PackageId metadata on all PackageFile items means we can tell appart which ones came from which dependencies
211204
NOTE: if PackageId is empty, we won't generate a manifest and it means the files need to be packed with the
@@ -225,6 +218,18 @@ Copyright (c) .NET Foundation. All rights reserved.
225218
</AssignPackagePath>
226219
</Target>
227220

221+
<Target Name="_AddPackageManifest" Condition="'$(IsPackable)' == 'true'">
222+
<!-- If packaging the project, provide the metadata as a non-file item -->
223+
<ItemGroup>
224+
<PackageFile Include="@(PackageTargetPath->'%(Id)')" Condition="'$(IsPackable)' == 'true'">
225+
<Kind>Metadata</Kind>
226+
<PackageId>$(PackageId)</PackageId>
227+
<Platform>$(Platform)</Platform>
228+
<TargetFrameworkMoniker Condition="'$(IsPackagingProject)' != 'true'">$(TargetFrameworkMoniker)</TargetFrameworkMoniker>
229+
</PackageFile>
230+
</ItemGroup>
231+
</Target>
232+
228233
<Target Name="_GetReferencedPackageContents"
229234
Condition="'$(_SupportsProjectReferences)' == 'true'"
230235
DependsOnTargets="$(_GetReferencedPackageContentsDependsOn)"

src/Build/NuGet.Build.Packaging.Tests/Scenarios/given_a_packaging_project/a.nuproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,12 @@
2222
<Name>e</Name>
2323
</ProjectReference>
2424
</ItemGroup>
25+
<Target Name="_AugmentMetadata" BeforeTargets="GetPackageContents">
26+
<ItemGroup>
27+
<PackageFile Condition="'%(PackageFile.Kind)' == 'Metadata'">
28+
<Foo>Bar</Foo>
29+
</PackageFile>
30+
</ItemGroup>
31+
</Target>
2532
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Scenario.targets))\Scenario.targets" />
2633
</Project>

src/Build/NuGet.Build.Packaging.Tests/given_a_packaging_project.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,20 @@ public void when_getting_contents_then_includes_referenced_project_outputs()
4040
}));
4141
}
4242

43+
[Fact]
44+
public void when_getting_contents_then_can_augment_package_metadata()
45+
{
46+
var result = Builder.BuildScenario(nameof(given_a_packaging_project), target: "GetPackageContents", output: output);
47+
48+
result.AssertSuccess(output);
49+
50+
Assert.Contains(result.Items, item => item.Matches(new
51+
{
52+
Kind = "Metadata",
53+
Foo = "Bar",
54+
}));
55+
}
56+
4357
[Fact]
4458
public void when_getting_contents_then_includes_referenced_project_satellite_assembly()
4559
{

0 commit comments

Comments
 (0)