I don’t like the way Windows Forms applications get built with all their binaries in a single folder. I also don’t like the publish options in Visual Studio - the .application files just feel messy, so I prefer to just deploy the executable and related assemblies using some kind of packaging tool.

The problem here is all the dll’s by default need to be in the base appdomain directory, which can end up being a horrible mess in the base install directory. There is a configuration option you can use with your application, though, to tell it to search in other folders for required assemblies, like so:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="bin;anotherbinsubfolder;yetanotherbin" />
    </assemblyBinding>
  </runtime>
</configuration>