I'm not so sure how I feel about it, but it was annoying enough for a blog post. For a very long time, Microsoft has had some really annoying policies around their code because of versioning and backward compatibility concerns.
On the one hand, it could be really frustrating, because it hindered progress. On the other hand, it was very reassuring, because existing code could be relied on the continue working.
We are working now on RavenDB 4.0, and I took a peek at MVC 6 (internally in RavenDB we are using Web API for the past several years), which is supposed to be the replacement for both Web API and ASP.Net MVC. And again, it is great that there is a single programming model, and I saw that there are compatibility shims in place to help the upgrade process, but they are expensive in term of perf, and they don't go all the way.
I wonder if this is the case because web applications are frequently short lived, in terms of development cycles. That plays relatively well to this kind of model. You generally wouldn't need to move large codebases between major framework versions.