Description
Changelog
Reviews (0)
Runtime C# hot reload for Godot 4.7+ (.NET 8)
Save a .cs file — watch it run. No restart, no domain reload, zero stuttering.
What works at runtime
- Static methods (void / return / ref / out / overloads)
- Instance methods — full cross-ALC forwarding via DynamicMethod IL emit
- Generic methods — all reference types + 8 common value types
- async/await and IEnumerable iterators — MoveNext patched safely
- Field layout guard — skips patch with a warning if you add/remove fields
- Restore All — one-click unpatch back to original
How it works
Watches src/, compiles to an isolated AssemblyLoadContext (no .godot/ file locks), diffs method signatures, and patches via Harmony. Instance methods use a DynamicMethod IL stub that pushes the old object ref directly as the new type's this — bypassing the cross-ALC type identity wall that breaks MethodInfo.Invoke.
Requirements
- Godot 4.7+ (.NET / mono build — not GDScript, not Godot 3.x)
- .NET 8 SDK
- One NuGet package:
Lib.Harmony 2.4.2
Quick Start (30 seconds)
- Drop
addons/GodotHotReload/into your project - Add
<PackageReference Include="Lib.Harmony" Version="2.4.2" />to your.csproj - Enable the plugin (Project → Project Settings → Plugins)
- In your bootstrap script's
_Ready():AddChild(new GodotHotReload.HotReloadRuntime()); - Press F5, edit any
.csinsrc/, save — done.
Get it
- itch.io: https://gutian2000.itch.io/hot-reload-live (free + optional donation)
- GitHub: https://github.com/gutian2000/hot-reload-live-godot
License
MIT. Includes Lib.Harmony 2.4.2 (MIT, by Andreas Pardeike).
Changelog for version 1.1.1
2026-09-26 07:24:39
No changelog provided for this version.