.net was fine ... they were solving these fleeting problems of interoperability, event driven gui programming, object re-use and a bunch of other things. They tried tackling this so many ways: win16, ole, mfc, activex, win32s ... it was a big mess and nothing really worked well.

Microsoft had some really smart people working on the problem for years and .net was the culmination of the efforts with things like c# and the very interesting f#.

The problem was they finally solved the desktop interoperability problem when it no longer mattered and there wasn't a huge killer app for it.

Properly scoped well designed abstractions can be extremely powerful and also pretty useless.

There's an interesting counterfactual if they had .net ready to go around windows 98 ... I might be on a windows phone right now...