Skip to content

Commit 2dbc828

Browse files
authored
[GenerateEmbeddedResourcesManifest] handle Items with empty LogicalName #29306 (#47887)
1 parent fb278a6 commit 2dbc828

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

src/FileProviders/Manifest.MSBuildTask/src/GenerateEmbeddedResourcesManifest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Licensed to the .NET Foundation under one or more agreements.
1+
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System;
@@ -90,11 +90,11 @@ public Manifest BuildManifest(EmbeddedItem[] processedItems)
9090
return manifest;
9191
}
9292

93-
private static string GetManifestPath(ITaskItem taskItem) => string.Equals(taskItem.GetMetadata(LogicalName), taskItem.GetMetadata(ManifestResourceName)) ?
93+
private static string GetManifestPath(ITaskItem taskItem) => string.IsNullOrEmpty(taskItem.GetMetadata(LogicalName)) || string.Equals(taskItem.GetMetadata(LogicalName), taskItem.GetMetadata(ManifestResourceName)) ?
9494
taskItem.GetMetadata(TargetPath) :
9595
NormalizePath(taskItem.GetMetadata(LogicalName));
9696

97-
private static string GetAssemblyResourceName(ITaskItem taskItem) => string.Equals(taskItem.GetMetadata(LogicalName), taskItem.GetMetadata(ManifestResourceName)) ?
97+
private static string GetAssemblyResourceName(ITaskItem taskItem) => string.IsNullOrEmpty(taskItem.GetMetadata(LogicalName)) || string.Equals(taskItem.GetMetadata(LogicalName), taskItem.GetMetadata(ManifestResourceName)) ?
9898
taskItem.GetMetadata(ManifestResourceName) :
9999
taskItem.GetMetadata(LogicalName);
100100

src/FileProviders/Manifest.MSBuildTask/test/GenerateEmbeddedResourcesManifestTest.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,28 @@ public void CreateEmbeddedItems_MapsMetadataFromEmbeddedResources_WithLogicalNam
5959
Assert.Equal(expectedItems, embeddedItems);
6060
}
6161

62+
[Fact]
63+
public void CreateEmbeddedItems_MapsMetadataFromEmbeddedResources_WithEmptyLogicalName()
64+
{
65+
// Arrange
66+
var task = new TestGenerateEmbeddedResourcesManifest();
67+
var embeddedFiles = CreateEmbeddedResource(
68+
CreateMetadata("site.css"),
69+
CreateMetadata(@"lib\js\jquery.validate.js", logicalName: string.Empty));
70+
71+
var expectedItems = new[]
72+
{
73+
CreateEmbeddedItem("site.css","site.css"),
74+
CreateEmbeddedItem(@"lib\js\jquery.validate.js","lib.js.jquery.validate.js")
75+
};
76+
77+
// Act
78+
var embeddedItems = task.CreateEmbeddedItems(embeddedFiles);
79+
80+
// Assert
81+
Assert.Equal(expectedItems, embeddedItems);
82+
}
83+
6284
[Fact]
6385
public void BuildManifest_CanCreatesManifest_ForTopLevelFiles()
6486
{

0 commit comments

Comments
 (0)