Well, We upgraded a very large, legacy monolith from .NET Core 3.1 (previously upgraded from .NET Framework 4.6.2) to .NET 7.0 three years ago, in about a week.
That included all Microsoft dependencies, file-scoped namespaces, and global usings. We ran into very few issues, mostly trivial compability issues, and since then we’ve kept it up to date with every new release, whether LTS or STS.
I mean, if we could do it, almost anyone can. 😀
P.S: To be fair, we did have a borderline-paranoid level of comprehensive unit tests, plus integration and functional tests backed by Testcontainers, so that probably helped a lot