AOT is not a panacea and comes with some restrictions/trade-offs that need understood before depending on it in production.

You also have the option to do single file deployment where it self-extracts the runtime when you run it. It's not as nice but it works and maintains full compatibility.

Losing dynamic PGO by using AOT compilation could be a detriment to performance in long-running applications, right?