There's still version/dependency hell (one thing wants 6, one thing wants 8, one thing wants 8.1, etc.).

This can be managed but you have to manage it.

(A fanatical commitment to backwards compatibility can make this a lot easier, but it doesn't seem to me that dotnet has that.)