Copy HotReload dll to intermediate to avoid duplicate identity in multi-client WASM#53656
Open
Copy HotReload dll to intermediate to avoid duplicate identity in multi-client WASM#53656
Conversation
The JS module was already copied to $(IntermediateOutputPath)hotreload/ to give each project a unique path (sdk#52816), but the dll was still referenced directly from the shared SDK path. In multi-client hosted Blazor WASM scenarios, both clients reference the same SDK-path dll, which causes ComputeWasmPublishAssets to replace Framework-materialized per-project assets with the shared path, leading to duplicate Identity crashes in ApplyCompressionNegotiation. Copy the dll to intermediate (matching the .js pattern) so each project gets a unique path. This is the same approach @javiercn recommended for the JS module in sdk#52816. Co-authored-by: Copilot <[email protected]>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the WASM SDK Hot Reload wiring to avoid duplicate-identity issues in multi-client hosted Blazor WebAssembly scenarios during publish by ensuring each project references a project-unique copy of the HotReload DLL.
Changes:
- Copy
Microsoft.DotNet.HotReload.WebAssembly.Browser.dllinto$(IntermediateOutputPath)hotreload/(matching the existing pattern used for the.jsmodule). - Update
ReferenceCopyLocalPathsto reference the intermediate-copied DLL instead of the shared SDK path. - Expand the comment to reflect that both the JS module and DLL are copied to avoid duplicate identity.
maraf
approved these changes
Apr 1, 2026
Ensures dotnet clean removes the intermediate copy. Co-authored-by: Copilot <[email protected]>
Member
Author
|
/backport to release/11.0.1xx-preview3 |
Contributor
|
Started backporting to |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Copy the HotReload dll to
$(IntermediateOutputPath)hotreload/before adding it toReferenceCopyLocalPaths, matching the pattern already used for the.jsmodule (sdk#52816).Problem
In multi-client hosted Blazor WASM scenarios, both clients reference the same HotReload dll from the shared SDK path. During publish,
ComputeWasmPublishAssetsuses this shared-path item to replace Framework-materialized per-project assets, causing duplicate key crashes inApplyCompressionNegotiation.Fix
Copy the dll to
obj/{config}/{tfm}/hotreload/(same as the .js module), then reference from there. Each project gets a unique path.Context
ComputeWasmPublishAssetsreplaces materialized per-client asset with raw SDK-path item