I don't usually give much credence to The Register, but this article on .NET's 10 year anniversary was spot on. The article asks whether .NET has lived up to its original promises from 2000. Here's a choice quotation from the conclusion:
What if Microsoft used it?
A long-standing gripe is that Microsoft itself has been slow to adopt .NET. "It will be the framework that Microsoft itself uses going forward" Microsoft's Tony Goodhew told TechEd in 2000. The company, though, has continued to use native code and C++ as the primary development platform for its crown jewels, Windows and Office. COM has never gone away, and .NET developers who want to use new Windows 7 APIs, for example, have to use an interop library to do so.
Put another way, Microsoft gradually repositioned .NET as a platform for business applications rather than as the foundation of everything it built.
This is my beef with .NET: it's a toy as far as Microsoft is concerned. I know first hand, because from 2000 to 2005 I worked exclusively with .NET. I've taught many courses on it and written much code in it (my implementation of the VNC protocol in .NET is still the main one people use six years later!). I really like C# as a language, and the CLR and .NET Framework are, in my opinion, well designed and intuitive to use. But that's only because I don't work for Microsoft.
I only really became aware of Microsoft's kid gloves handling of .NET when I started working on a Mac full-time. Developing on Mac with the Apple SDKs, I was amazed to learn that I could create things using the exact same thing Apple used. This sounds obvious, but with Microsoft and .NET, if you want to make an app that looks anything like a standard Windows program, you are out of luck. All the GUI stuff Microsoft does in their apps and OS is made in some magical widget factory, leaving you to use whatever crap is still kicking around from Windows 95. Using Microsoft's tools and Microsoft's development environment, it's not possible to make something that looks and feels like something Microsoft built. And the reason for this is quite simply that Microsoft wouldn't use this stuff if you paid them. .NET isn't good enough for them (the .NET in Visual Studio.NET is just a sticker on the box).
In 2005, I bumped into some of the guys doing Mozilla here in Toronto. Initially it was those friendships, as opposed to anything technical, which caused me to switch my focus. Where I'd been thinking only about desktop and server side apps, now I was thinking about the web, and the tools you need to make, render, and build the web. I never stopped liking C#. I just stopped needing it. Today I mainly work in C++, JavaScript, Python, and assorted web technologies. And I made the right decision, too, and at the right time. I've been living in the future since 2005:
At the dawn of a new decade, the universal canvas idea looks plausible again, but with an HTML and JavaScript client running in a cross-platform browser. Although .NET has arguably succeeded more than it has failed, Microsoft needs to come up with some new strategy that is at least as bold, if it is to counter the next decade's threats to its platform.
I don't think .NET is going anywhere. Microsoft doesn't need to change it in order to evolve their platform, since they don't depend on it. As such it can live on as is, and do the work people use it for, and have, for the past decade.