From 34856a8057a676952907fe925c65d945d2e06bad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Fi=C5=A1era?= Date: Mon, 6 Oct 2025 16:06:33 +0200 Subject: [PATCH 1/4] Expect fingerprint in assemblies promoted from build --- .../ComputeWasmPublishAssets.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs index c2332f2985df06..d7122a10c2a027 100644 --- a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs +++ b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs @@ -440,7 +440,7 @@ private void ComputeUpdatedAssemblies( foreach (var kvp in assemblyAssets) { var asset = kvp.Value; - var fileName = Path.GetFileName(asset.ItemSpec); + var fileName = Path.GetFileName(FingerprintAssets ? asset.GetMetadata("OriginalItemSpec") : asset.ItemSpec); if (IsWebCilEnabled) fileName = Path.ChangeExtension(fileName, ".dll"); From 0bc84728fdd082e5efd6adffe78691703ecca6c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Fi=C5=A1era?= Date: Tue, 7 Oct 2025 10:09:40 +0200 Subject: [PATCH 2/4] Expect fingerprint in assemblies promoted from build --- .../ComputeWasmPublishAssets.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs index d7122a10c2a027..aaa272afe5a999 100644 --- a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs +++ b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs @@ -469,7 +469,7 @@ private void ComputeUpdatedAssemblies( { assetsToUpdate.Add(satelliteAssembly.ItemSpec, satelliteAssembly); var culture = satelliteAssembly.GetMetadata("AssetTraitValue"); - var fileName = Path.GetFileName(satelliteAssembly.ItemSpec); + var fileName = Path.GetFileName(FingerprintAssets ? satelliteAssembly.GetMetadata("OriginalItemSpec") : satelliteAssembly.ItemSpec); if (IsWebCilEnabled) fileName = Path.ChangeExtension(fileName, ".dll"); From 97a96326d2eadb020eafaf6fb1bcc83dae94d5d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Fi=C5=A1era?= Date: Tue, 7 Oct 2025 14:50:46 +0200 Subject: [PATCH 3/4] Fix satellite assemblies --- .../ComputeWasmPublishAssets.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs index aaa272afe5a999..2fb1aab674b0ae 100644 --- a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs +++ b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs @@ -420,6 +420,13 @@ private void ProcessSymbolAssets( } } + private string GetNonFingerprintedAssetItemSpec(ITaskItem asset) + { + var fileName = Path.GetFileName(FingerprintAssets ? asset.GetMetadata("OriginalItemSpec") : asset.ItemSpec); + var assetToUpdateItemSpec = Path.Combine(Path.GetDirectoryName(asset.ItemSpec), fileName); + return assetToUpdateItemSpec; + } + private void ComputeUpdatedAssemblies( IDictionary<(string, string assemblyName), ITaskItem> satelliteAssemblies, List filesToRemove, @@ -441,13 +448,14 @@ private void ComputeUpdatedAssemblies( { var asset = kvp.Value; var fileName = Path.GetFileName(FingerprintAssets ? asset.GetMetadata("OriginalItemSpec") : asset.ItemSpec); + var assetToUpdateItemSpec = FingerprintAssets ? GetNonFingerprintedAssetItemSpec(asset) : asset.ItemSpec; if (IsWebCilEnabled) fileName = Path.ChangeExtension(fileName, ".dll"); if (resolvedAssembliesToPublish.TryGetValue(fileName, out var existing)) { // We found the assembly, so it'll have to be updated. - assetsToUpdate.Add(asset.ItemSpec, asset); + assetsToUpdate.Add(assetToUpdateItemSpec, asset); filesToRemove.Add(existing); if (!string.Equals(asset.ItemSpec, existing.GetMetadata("FullPath"), StringComparison.Ordinal)) { @@ -465,6 +473,7 @@ private void ComputeUpdatedAssemblies( { var satelliteAssembly = kvp.Value; var relatedAsset = satelliteAssembly.GetMetadata("RelatedAsset"); + if (assetsToUpdate.ContainsKey(relatedAsset)) { assetsToUpdate.Add(satelliteAssembly.ItemSpec, satelliteAssembly); @@ -517,7 +526,8 @@ private void ComputeUpdatedAssemblies( ApplyPublishProperties(newAsemblyAsset); newAssets.Add(newAsemblyAsset); - updatedAssetsMap.Add(asset.ItemSpec, newAsemblyAsset); + var assetToUpdateItemSpec = FingerprintAssets ? GetNonFingerprintedAssetItemSpec(asset) : asset.ItemSpec; + updatedAssetsMap.Add(assetToUpdateItemSpec, newAsemblyAsset); break; default: // Satellite assembliess and compressed assets From 53536919882a7fbf9c3c76295653dfda929f594b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Fi=C5=A1era?= Date: Wed, 8 Oct 2025 15:28:15 +0200 Subject: [PATCH 4/4] Feedback --- .../ComputeWasmPublishAssets.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs index 2fb1aab674b0ae..98db78edc5f0e0 100644 --- a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs +++ b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/ComputeWasmPublishAssets.cs @@ -420,9 +420,12 @@ private void ProcessSymbolAssets( } } - private string GetNonFingerprintedAssetItemSpec(ITaskItem asset) + private string GetItemSpecWithoutFingerprint(ITaskItem asset) + => FingerprintAssets ? asset.GetMetadata("OriginalItemSpec") : asset.ItemSpec; + + private static string GetNonFingerprintedAssetItemSpec(ITaskItem asset) { - var fileName = Path.GetFileName(FingerprintAssets ? asset.GetMetadata("OriginalItemSpec") : asset.ItemSpec); + var fileName = Path.GetFileName(asset.GetMetadata("OriginalItemSpec")); var assetToUpdateItemSpec = Path.Combine(Path.GetDirectoryName(asset.ItemSpec), fileName); return assetToUpdateItemSpec; } @@ -447,7 +450,7 @@ private void ComputeUpdatedAssemblies( foreach (var kvp in assemblyAssets) { var asset = kvp.Value; - var fileName = Path.GetFileName(FingerprintAssets ? asset.GetMetadata("OriginalItemSpec") : asset.ItemSpec); + var fileName = Path.GetFileName(GetItemSpecWithoutFingerprint(asset)); var assetToUpdateItemSpec = FingerprintAssets ? GetNonFingerprintedAssetItemSpec(asset) : asset.ItemSpec; if (IsWebCilEnabled) fileName = Path.ChangeExtension(fileName, ".dll"); @@ -478,7 +481,7 @@ private void ComputeUpdatedAssemblies( { assetsToUpdate.Add(satelliteAssembly.ItemSpec, satelliteAssembly); var culture = satelliteAssembly.GetMetadata("AssetTraitValue"); - var fileName = Path.GetFileName(FingerprintAssets ? satelliteAssembly.GetMetadata("OriginalItemSpec") : satelliteAssembly.ItemSpec); + var fileName = Path.GetFileName(GetItemSpecWithoutFingerprint(satelliteAssembly)); if (IsWebCilEnabled) fileName = Path.ChangeExtension(fileName, ".dll");