C#'s a nice contender against Java, but in my hindsight, it had an overly limited vision.
MS's offerings in that arena are at least as good as any other, if not superior, and I think far superior to the latest fad of (ab)using the web browser as a One Size Fits All application platform.
Why did this matter? Innovation is much faster and a lot cheaper with open source. Other platforms benefited and grew from it, and a lot of people left the MS ecosystem because it seemed to stagnate i.e. you have to re-invent a lot of wheels when staying in MS's world while all of that is already done and freely available to you on other platforms.
I'm not saying that MS hasn't changed their stance on open source (Codeplex is a prime example). I'm just telling the story of how MS lost traction with developers.