Skip to content

Commit 340a143

Browse files
authored
Allow pdb delta to be optionally included in a hot reload payload (#39540) (#39742)
* Allow pdb delta to be optionally included in a hot reload payload Fixes #39036
1 parent 3de4a41 commit 340a143

File tree

6 files changed

+11
-6
lines changed

6 files changed

+11
-6
lines changed

src/Components/Web.JS/src/Boot.WebAssembly.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ async function boot(options?: Partial<WebAssemblyStartOptions>): Promise<void> {
4242
}
4343
});
4444

45-
Blazor._internal.applyHotReload = (id: string, metadataDelta: string, ilDeta: string) => {
46-
DotNet.invokeMethod('Microsoft.AspNetCore.Components.WebAssembly', 'ApplyHotReloadDelta', id, metadataDelta, ilDeta);
45+
Blazor._internal.applyHotReload = (id: string, metadataDelta: string, ilDelta: string, pdbDelta: string | undefined) => {
46+
DotNet.invokeMethod('Microsoft.AspNetCore.Components.WebAssembly', 'ApplyHotReloadDelta', id, metadataDelta, ilDelta, pdbDelta);
4747
};
4848

4949
Blazor._internal.getApplyUpdateCapabilities = () => DotNet.invokeMethod('Microsoft.AspNetCore.Components.WebAssembly', 'GetApplyUpdateCapabilities');

src/Components/Web.JS/src/GlobalExports.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ interface IBlazor {
6060
attachWebRendererInterop?: typeof attachWebRendererInterop,
6161

6262
// APIs invoked by hot reload
63-
applyHotReload?: (id: string, metadataDelta: string, ilDelta: string) => void,
63+
applyHotReload?: (id: string, metadataDelta: string, ilDelta: string, pdbDelta: string | undefined) => void,
6464
getApplyUpdateCapabilities?: () => string,
6565
}
6666
}

src/Components/WebAssembly/WebAssembly/src/HotReload/HotReloadAgent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ public void ApplyDeltas(IReadOnlyList<UpdateDelta> deltas)
188188
{
189189
if (TryGetModuleId(assembly) is Guid moduleId && moduleId == item.ModuleId)
190190
{
191-
MetadataUpdater.ApplyUpdate(assembly, item.MetadataDelta, item.ILDelta, ReadOnlySpan<byte>.Empty);
191+
MetadataUpdater.ApplyUpdate(assembly, item.MetadataDelta, item.ILDelta, item.PdbBytes ?? ReadOnlySpan<byte>.Empty);
192192
}
193193
}
194194

src/Components/WebAssembly/WebAssembly/src/HotReload/UpdateDelta.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ internal sealed class UpdateDelta
1111

1212
public byte[] ILDelta { get; set; } = default!;
1313

14+
public byte[]? PdbBytes { get; set; }
15+
1416
public int[]? UpdatedTypes { get; set; }
1517
}
1618
}

src/Components/WebAssembly/WebAssembly/src/HotReload/WebAssemblyHotReload.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,14 @@ internal static async Task InitializeAsync()
4242
/// For framework use only.
4343
/// </summary>
4444
[JSInvokable(nameof(ApplyHotReloadDelta))]
45-
public static void ApplyHotReloadDelta(string moduleIdString, byte[] metadataDelta, byte[] ilDeta)
45+
public static void ApplyHotReloadDelta(string moduleIdString, byte[] metadataDelta, byte[] ilDelta, byte[] pdbBytes)
4646
{
4747
var moduleId = Guid.Parse(moduleIdString);
4848

4949
_updateDeltas[0].ModuleId = moduleId;
5050
_updateDeltas[0].MetadataDelta = metadataDelta;
51-
_updateDeltas[0].ILDelta = ilDeta;
51+
_updateDeltas[0].ILDelta = ilDelta;
52+
_updateDeltas[0].PdbBytes = pdbBytes;
5253

5354
_hotReloadAgent!.ApplyDeltas(_updateDeltas);
5455
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
#nullable enable
2+
*REMOVED*static Microsoft.AspNetCore.Components.WebAssembly.HotReload.WebAssemblyHotReload.ApplyHotReloadDelta(string! moduleIdString, byte[]! metadataDelta, byte[]! ilDeta) -> void
3+
static Microsoft.AspNetCore.Components.WebAssembly.HotReload.WebAssemblyHotReload.ApplyHotReloadDelta(string! moduleIdString, byte[]! metadataDelta, byte[]! ilDelta, byte[]! pdbBytes) -> void

0 commit comments

Comments
 (0)