My WinForms 2.0 application has 2 assemblies. 1st assembly handles GUI and project specific code, and 2nd assembly is where I put all my reusable code. Both projects are part of
Learn to rely on NuGet, it will automatically manage your dependencies and store them in proper folder.
As for log4net, the compatibility has already been broken because of messed keys and broken method contracts. No one knows how to resolve this mess:
http://netpl.blogspot.com/2012/03/pathetic-breaking-change-between.html