Skip to content

Commit 968affa

Browse files
authored
Allow pdb delta to be optionally included in a hot reload payload (#39540)
* Allow pdb delta to be optionally included in a hot reload payload Fixes #39036
1 parent 0e106d4 commit 968affa

File tree

6 files changed

+13
-8
lines changed

6 files changed

+13
-8
lines changed

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

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

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

5050
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
@@ -63,7 +63,7 @@ interface IBlazor {
6363
attachWebRendererInterop?: typeof attachWebRendererInterop,
6464

6565
// APIs invoked by hot reload
66-
applyHotReload?: (id: string, metadataDelta: string, ilDelta: string) => void,
66+
applyHotReload?: (id: string, metadataDelta: string, ilDelta: string, pdbDelta: string | undefined) => void,
6767
getApplyUpdateCapabilities?: () => string,
6868
}
6969
}

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

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

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,7 @@ 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
}

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public static class WebAssemblyHotReload
2020
private static HotReloadAgent? _hotReloadAgent;
2121
private static readonly UpdateDelta[] _updateDeltas = new[]
2222
{
23-
new UpdateDelta(),
24-
};
23+
new UpdateDelta(),
24+
};
2525

2626
internal static async Task InitializeAsync()
2727
{
@@ -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)