I want a setup like this:
+- /ApplicationFolder
-- App.exe
-- Core.dll
-- AnotherShared.dll
+- /PluginsFolder
-- plugin1.dll
-- plugin2.dll
<
When you create an AppDomain you can define a path for loading assemblies. Set AppDomainSetup.PrivateBinPath and pass to AppDomain.Create domain.
Using an AppDomain is a good idea for plugins (allows different CAS and unloading).
To avoid VS/msbuild copying referenced assemblies to the output directory, change "Copy Local" to false in the properties of the reference.