I want a setup like this:
+- /ApplicationFolder
-- App.exe
-- Core.dll
-- AnotherShared.dll
+- /PluginsFolder
-- plugin1.dll
-- plugin2.dll
<
you can try this: How can I set PrivateBinPath in MEF?
or you can try handling the Appdomain.AssemblyResolve event that is raised anytime .net cant locate an assembly. there you can implement custom logic to locate and load assemblies from anywhere.
the AssemblyResolve eventhandler jsut returns either the assembly that is beeing looked for or null, so you could return the already loaded Core.dll from available from the AppDomain.GetAssemblies() method.
however in your case it should be ok to simply not include Code.dll with plugin1.dll, .net should already realize that Core.dll is loaded and use that instance