As a Microsoft developer for more than a decade I can say without a doubt the biggest complaint is that you operate on Microsoft's schedule. If they say LINQ to SQL is dead. It's dead. If they say, you must build Windows apps using XAML, you have to use XAML. I've had to learn at least 5 different data access frameworks over the years.
What I've learned is that core functionality (like arrays, strings, math libraries, etc.) are great but when you adopt higher level Microsoft frameworks (like authentication in ASP.NET) you have to be prepared that at some future point MS will pull the plug.
Open source projects can integrate very well with .NET but if you're starting from scratch at a startup I don't think there is a huge value in the tool chain the Microsoft offers v. OSS tool chain.
What I've learned is that core functionality (like arrays, strings, math libraries, etc.) are great but when you adopt higher level Microsoft frameworks (like authentication in ASP.NET) you have to be prepared that at some future point MS will pull the plug.
Open source projects can integrate very well with .NET but if you're starting from scratch at a startup I don't think there is a huge value in the tool chain the Microsoft offers v. OSS tool chain.