name: gum-runtime-topology
description: Map of Gum's render-backend projects and every place that compiles shared Gum source. Triggers: moving/renaming/deleting runtime or GumCommon/RenderingLibrary files, AllLibraries.sln, SkiaGum.Wpf, FRB GumCoreShared/Forms shproj, duplicate same-FQN build errors, "what must I rebuild after a runtime refactor."
Gum Runtime Topology
Gum has no single "runtime" assembly. The same RenderingLibrary.* / GumCommon source is compiled into many assemblies via three different source-sharing mechanisms, and is also consumed by FlatRedBall (FRB), a separate repo. A refactor that builds clean in AllLibraries.sln can still break the WPF runtime or FRB. Before moving/renaming/deleting any shared file, check it against every surface below.
FRB is a separate git repo, but Gum and FRB are always checked out side by side (GitHub/Gum and GitHub/FlatRedBall), so ../FlatRedBall/... reaches FRB from the Gum repo root.
Compilation surfaces — rebuild/verify ALL for a runtime-level refactor
| Surface | What it is | Notes |
|---|
AllLibraries.sln | All render backends + GumCommon + shapes + themes + CLI + ProjectServices + tests | Must compile on Mac, so it EXCLUDES Windows-only projects. The broad verify command — but not complete. |
Runtimes/SkiaGum.Wpf/SkiaGum.Wpf.csproj | WPF host for the Skia runtime | NOT in AllLibraries (WPF can't build on Mac). Build separately on Windows. The single easiest runtime to forget. |
GumFull.sln | The Gum tool (KNI-based) + plugins | Tool work; $(SolutionDir) post-builds require the solution, not a bare csproj. |
GumCoreShared.shproj | Gum-side shared project (imports GumCoreShared.projitems) | Source-shares Gum core into FRB. The file lists live in the .projitems. |
../FlatRedBall/FRBDK/Glue/GumPlugin/GumPlugin/GumCoreShared.FlatRedBall.shproj | FRB-side core consumer | FRB multi-targets down to — gate net7+ BCL APIs. |