From what perspective are you coming from that you think .NET is dying (student, education, corporate, open source)? MS has never been a technology leader as they tend to let others make the early mistakes then charge in, ask Netware, OS2/IBM, Sony, Netscape. Early bird gets the worm but the second mouse gets the cheese!
All of the above? A little background: some of my earliest bits of programming were on VB5, then VB6, and then .NET 1.0 when that first showed up. I spent most of my early years on MS platforms, and for the most part I liked them. I picked up a Surface RT to hack on last year, after a long absence from .NET. The state of .NET shocked me. For one thing, the subset of .NET that's available on WinRT vs. "real" Win8 vs.…
I think you're a bit off base on open source - there's not the same level of emphasis as on some other platforms, but there's a fair amount of high quality open source stuff for the platform, whether by Microsoft (F#, ASP.NET MVC, etc.) or by the community (Mono, Service Stack, nHibernate, etc.). The move towards NuGet packages has increased the momentum here significantly.
I also think that you're not being fair when you talk about Microsoft switching directions on developers. It's certainly true that the new hot MS technology may come out in 3 months and the way you've been doing things may no longer be recommended, but I can't think of any company as good as Microsoft at supporting their legacy technologies.