Over the last couple of days I have been trying to improve the application I have been working on at Intilecta. The application dynamically loads assemblies to provide specific functionality. At the moment this is done from the file system, but we want to change the deployment model so that the assemblies can be loaded from a byte array or even a stream of some description. This can easily be achieved using the Assembly.Load method. However, we started to run into issues when the assemblies we were loading had dependencies.
I spent a few minutes trying to understand what was going on and tracked it down to an issue relating to the way that assemblies are resolved. An article on GotDotNet really summarised this quite nicely and definitely worth a read if you are doing any dynamic assembly loading. I would imagine that there are some differences with v2 of the .NET Framework but would guess that the majority of this article still holds.