title: Given the choice, what are the pros/cons of mixed-mode assemblies vs. separate interop DLLs?
body: <p>When a 3rd-party component is offered in both "mixed-mode assembly" and "separate interop dll" versions, what are the pros and cons of each?</p>
  
  <p>A good example is <a href="https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki">System.Data.SQLite</a>.</p>
  
  <p>The above link has this to say:</p>
  
  <blockquote>
    <p>[Mixed-mode assembly] packages should only be used in cases where the assembly binary must be deployed to the Global Assembly Cache for some reason.</p>
  </blockquote>
  
  <p>But WHY? The mixed-mode assembly seems to work just fine in my projects, with no GAC installation (just xcopy to the application's exe directory). It's nice to have one less DLL. It <em>feels</em> tidier. So what are the cons?</p>
  
  <p>Vice-versa, why would/should one ever favor the two-DLL "native-dll + interop-dll" version?</p>