An alternative approach to setting probing in you config (if you require more flexibility) - is that you can add your own handler to search other locations and load them yourself.
In the main method that starts your app
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainAssemblyResolve;
add a handler with your own method to take the name and search other locations -
private static Assembly CurrentDomainAssemblyResolve(object setnder, ResolveEventArgs args)
{
return LoadEmbeddedAssembly(args.Name);
}
I use this method to embed DLLs as resources so I can have a single executable to distribute, but you can load them from a directory just as well.