Explorar el Código

[GenerateEmbeddedResourcesManifest] handle Items with empty LogicalName #29306 (#47887)

Rafael Dowling Goodman hace 2 años
padre
commit
2dbc8287ae

+ 3 - 3
src/FileProviders/Manifest.MSBuildTask/src/GenerateEmbeddedResourcesManifest.cs

@@ -1,4 +1,4 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
 // The .NET Foundation licenses this file to you under the MIT license.
 // The .NET Foundation licenses this file to you under the MIT license.
 
 
 using System;
 using System;
@@ -90,11 +90,11 @@ public class GenerateEmbeddedResourcesManifest : Microsoft.Build.Utilities.Task
         return manifest;
         return manifest;
     }
     }
 
 
-    private static string GetManifestPath(ITaskItem taskItem) => string.Equals(taskItem.GetMetadata(LogicalName), taskItem.GetMetadata(ManifestResourceName)) ?
+    private static string GetManifestPath(ITaskItem taskItem) => string.IsNullOrEmpty(taskItem.GetMetadata(LogicalName)) || string.Equals(taskItem.GetMetadata(LogicalName), taskItem.GetMetadata(ManifestResourceName)) ?
         taskItem.GetMetadata(TargetPath) :
         taskItem.GetMetadata(TargetPath) :
         NormalizePath(taskItem.GetMetadata(LogicalName));
         NormalizePath(taskItem.GetMetadata(LogicalName));
 
 
-    private static string GetAssemblyResourceName(ITaskItem taskItem) => string.Equals(taskItem.GetMetadata(LogicalName), taskItem.GetMetadata(ManifestResourceName)) ?
+    private static string GetAssemblyResourceName(ITaskItem taskItem) => string.IsNullOrEmpty(taskItem.GetMetadata(LogicalName)) || string.Equals(taskItem.GetMetadata(LogicalName), taskItem.GetMetadata(ManifestResourceName)) ?
         taskItem.GetMetadata(ManifestResourceName) :
         taskItem.GetMetadata(ManifestResourceName) :
         taskItem.GetMetadata(LogicalName);
         taskItem.GetMetadata(LogicalName);
 
 

+ 22 - 0
src/FileProviders/Manifest.MSBuildTask/test/GenerateEmbeddedResourcesManifestTest.cs

@@ -59,6 +59,28 @@ public class GenerateEmbeddedResourcesManifestTest
         Assert.Equal(expectedItems, embeddedItems);
         Assert.Equal(expectedItems, embeddedItems);
     }
     }
 
 
+    [Fact]
+    public void CreateEmbeddedItems_MapsMetadataFromEmbeddedResources_WithEmptyLogicalName()
+    {
+        // Arrange
+        var task = new TestGenerateEmbeddedResourcesManifest();
+        var embeddedFiles = CreateEmbeddedResource(
+            CreateMetadata("site.css"),
+            CreateMetadata(@"lib\js\jquery.validate.js", logicalName: string.Empty));
+
+        var expectedItems = new[]
+        {
+            CreateEmbeddedItem("site.css","site.css"),
+            CreateEmbeddedItem(@"lib\js\jquery.validate.js","lib.js.jquery.validate.js")
+        };
+
+        // Act
+        var embeddedItems = task.CreateEmbeddedItems(embeddedFiles);
+
+        // Assert
+        Assert.Equal(expectedItems, embeddedItems);
+    }
+
     [Fact]
     [Fact]
     public void BuildManifest_CanCreatesManifest_ForTopLevelFiles()
     public void BuildManifest_CanCreatesManifest_ForTopLevelFiles()
     {
     {