Option 1
You can tell your application that you will resolve the Assemblies yourselves if not found in references. To do that:
In your applications main method attach assembly resolver:
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
Make sure you are not using the dynamically resolved assembly in your main method.
Your resolver method code (This is where you load an assembly - look at ResolveEventArgs I have just hard coded one but you can resolve various assemblies from different locations here)
static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
return Assembly.LoadFile(@"C:\temp\ClassLibrary1.dll");
}
Option 2
Add this to your app.config (Only works for application base directory's sub folders)
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="PathToMyAssemblies\" />
</assemblyBinding>
</runtime>