It's a "Microsoft Framework", it's going to be enterprise-y Design-Patterns, convoluted abstractions, Dependency-Injection-on-Dependency-Injection and MS specific code/libs all the way down.
Lack of higher-level language features requiring code duplication/generation, a lean standard library usually necessitating 3rd-party packages, and an utterly terrible module system and fragile tooling setup.
Go is still far better than JS, but both are behind in modules, packaging and overall structure as compared to .NET. gofmt is nice though, more languages should have that.
For all it's other woes, I've had like 80% fewer issues with Go's tooling than .Net's.
- Getting packages installed: trivial
- Getting clean builds: trivial
- Build and run works near perfectly
In comparison .net seems designed to be used _only_ via Visual Studio:
- Why does it re-download the packages each time I ask it to build?
- Why does VS freak out sometimes when there's a terminal window left over from a previous run?
- Why does VS freak out so thoroughly when something changes under it.
- Sometimes it just caches your previous build and thinks it's perpetually broken no matter how many changes you make, restarting seems to be the only option.
- Getting dotnet tools to work from the command line (the way Cargo/Yarn/Julia/Pipenv/etc do) was a confusing affair fraught with instructions like "oh you've got to into this XML file and set these random configs and tell it where x/y/z dll is".
That's before we get to the whole disaster that is "add this as a reference to your project". No programming language has caused me quite as much frustration as C#/.net manages to.
We use it all the time, no VS required. You don't have to edit any XML files today, and can use a simple editor like Visual Studio Code or notepad if you want.
Do you have some big old solution that you're working with?