There is no difference between MVC3 and MVC4 with respect to IDependencyResolver, except for the fact that there is a separate resolver for the WebAPI.
In my opinion, Mike Hadlow is too elegant about this subject, and many other people jumped on the bandwagon without thinking about why.
Yes, it’s true that Castle Windsor has a specific object style (such as a lifecycle management object) called Pooled, which often requires you to call Release on it. And when using this lifestyle, you probably shouldn't use IDependencyResolver because it does not provide access to this Release method (although there are ways around this too).
However, I find that using this lifestyle in a web application is usually bad, and instead you should use the PerWebRequest style, which automatically frees objects at the end of the web request. If this is what you are using, then there is no problem using IDependencyResolver with Castle Windsor.
Why do I think Hadlow is too caustic? Well, because he bases his entire argument on this:
"That's right, no." Release method. You can provide the service from your IoC container, but this is not a way to clear. If I were going to use it at the Suteki Shop, I would have a memory leak from an epic proportion. "
He then continues to refer to Krzysztof Koimik's article on lifestyle management, but neglects the link to his next article, which I will do here:
http://kozmic.net/2010/08/27/must-i-release-everything-when-using-windsor/
Pay attention to what he says here:
"Since, as I mentioned in my previous post, Windsor will keep track of your component, it's a common misconception that belongs to users , so that they must call the Release method in the container to properly release all components."
He discusses other aspects further, but overall I don’t think that most people will use Pooled or Transient objects that require removal in a web application. And if you do, then you should not use IDependencyResolver. Otherwise, you should not have a problem.
I know that I will probably get a lot of grief from people who argue differently, but I just don’t see the end of the world question in this, which seems to be what Hadlow seems to think, because there are so many alternatives, and workarounds, even if you need to call Release.
On top of all this, using a lifestyle that requires a Release call means extra work for you, the developer. Now you need to control the lifetime of the object and remember to delete the objects, and this does not create a memory leak. This essentially nullifies the benefits of garbage collection, in my opinion. I use only temporary objects with things that do not need to be disposed of, and I never use combined objects.
By the way, I can be wrong, but I do not think that any other capacity has this problem. This leads me to conclude that it is a Windsor that is broken, not MVC, when every other container there seems to have no problem with this. Windsor loves to stubbornly hold on to his version of reality, though, which is why YMMV.