title: How does visual studio determine what to copy to the output directory with multi-project solutions?
body: <p>Let's say we have a solution with the following structure:</p>
  
  <ul>
  <li>Project.DAL - Data access layer,
  depends on a lower-level library,
  e.g. Oracle.DataAccess w/copy local
  = true </li>
  <li>Project.BLL - Business logic layer, references Project.DAL as
  project </li>
  <li>Project.UI - UI layer,
  compiles to executable, references
  Project.BLL, default project</li>
  </ul>
  
  <p>When Project.UI is compiled, VS is smart enough to copy Project.DAL.dll to the output directory, but it's not smart enough to figure out that I wanted Oracle.DataAccess to be copied to the output directory as well for distribution to clients.</p>
  
  <p>Can anyone explain why this is so?  Is it because it sees Oracle.DataAccess in the GAC and assumes that clients will have it in the GAC as well?</p>
  
  <p>It's not that big of a deal, but it's kinda annoying that every time I add a new assembly reference, I have to remember to set it to copy local and add an item to copy it in my build script as well. </p>